MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Power Automate から SharePoint リスト のコメントを追加する

f:id:mofumofu_dance:20210622161826p:plain

SharePoint リストのコメント機能とは?

2020年の11月頃に追加されたSharePointリストの機能です。

アイテムに対してコメントを残すことができて、さらに最近のアップデートでユーザーにメンションする機能も追加されました。

f:id:mofumofu_dance:20210622152836p:plain

詳しくは TAICHIさん の黒いブログで解説されているのでチェックしてください。

art-break.net

@メンション

コメントでは @XXXX の形式で複数のユーザーにメンションすることができます。

メンションされたユーザーにはコメント本文とコメントへのリンク入りで、メール通知が送られます。

f:id:mofumofu_dance:20210622154234p:plain

※差出人はコメントした人。メールボックスにも送信済みとして入っている。

本題:Power Automate からのコメントとメンション送信

さて、このコメントですが、SharePoint REST API を利用して取得・追加が可能です。

Uriは以下の形式です。

_api/web/lists/GetByTitle('<List Title>')/items(<ItemID>)/Comments()

ここではリストをタイトルから取得していますが、lists(<List GUID>)/items(<ItemID>) でリストとアイテムを特定してもよいと思います。

とにかくポイントとしては、1アイテムに Nコメントなのでアイテムを特定してからコメントにアクセス です。

Power Automate で コメントを操作するためには 「Send an HTTP request to SharePoint」のアクションを使います。

取得するだけであれば Method を GET とすればOKです。

f:id:mofumofu_dance:20210622155026p:plain

普通のコメント

普通の (?) コメントを送信する場合には送信するBodyを以下の形式にします。

{ "text":"Test Comment \n New line"}

改行は \n でも、decodeUriComponent('%0A')でもどちらでも反映されていました。

f:id:mofumofu_dance:20210622160106p:plain

メンション付きコメント

メンション付きのコメントは少しBodyが特殊です。

{
    "text": "@mention{0} test \n @mention{1} test2",
    "mentions": [
        {
            "email": "chris@example.com",
            "name": "Chris"
        },
        {
            "email": "david@example.com",
            "name": "David"
        }
    ]
}

複数ユーザーにメンションを送ることができますが、メンション先の一覧は "mentions"という名前の配列を作って指定します。

コメントの中では、『メンション先一覧の中の何番目を使うか』 を @mention{N} の形で指定します。

上の例では 0番目がChrisなので、最初のメンションは @mention{0} --> @Chris に、後ろのメンションは @mention{1} --> @David にそれぞれ置き換えられます。

"name"には 対象ユーザーの表示名 (DisplayName) を入れるので、Office 365 Users コネクターなどで取得するとよいでしょう。

f:id:mofumofu_dance:20210622161101p:plain

まとめ

Power Automate で SharePoint REST API を利用して リストのコメント追加およびメンションする方法を紹介しました。

ポイントは

  1. Uri : _api/web/lists/GetByTitle('')/items()/Comments()
  2. 改行は \n
  3. メンションは対象のユーザー一覧が必要。コメント内では @mention{N}で指定

です。

ご参考まで。