ルドルフもわたるふもいろいろあってな

Microsoft 365、Power Platform、PowerShellについて調べたことや検証したことなどを投稿します。技術の話は面白い。

【Power Automate】【解説編その1】スレッドでの発言者を既存のタグに追加する

掲題のフローについての解説編です。

このフローをGitHubで公開しました。下記リンク先からダウンロードしてください。

github.com

解説の経緯

今回の投稿は概要編の続きです。

※概要編の公開から二ヶ月あいてしまってすいません。

フローの使用イメージ

フローの使用イメージについては概要編に記載しています。概要編を未読のかたはそちらを先に参照ください。

解説の範囲について

「スレッドのすべての投稿を取得する」ステップについては別投稿を参照してください
投稿を取得するアクション(下図の赤枠)については過去に投稿したこちらの記事で解説したフローと同じです。そのため、今回は説明を割愛します。

wataruf.hatenablog.com

解説する範囲

解説編は複数回にわけて投稿します。今回の投稿で解説する範囲は下図の赤枠の部分です。

ステップごとの解説

「スコープ-投稿者IDの配列からnullと重複を排除」アクション

このアクションは「コントロール」>「スコープ」です。このスコープはフローの可読性を上げるために複数のアクションをグループ化するために使用します。

このスコープに含まれるアクションは下図の3つです。

「選択-「親の投稿」と返信それぞれの投稿者のID一覧」アクション

このアクションは「データ操作」>「選択」です。このアクションでスレッドに投稿したユーザーのIDを配列として取得します。

"inputs": {
    "from": "@variables('投稿一覧')",
    "select": "@item()?['from']?['user']?['id']"
},

このアクションの入力はこちらです。

これはフローの起点となったスレッドの投稿一覧です。このJSONデータは解説を割愛したアクション内で取得しています。

このアクションの出力はこちらです。スレッドの投稿者データに含まれるユーザーIDの配列です。null になっているのは削除された投稿のデータです。

「アレイのフィルター処理-nullを排除」アクション

このアクションは「データ操作」>「アレイのフィルター処理」です。配列に含まれるnull 要素を取り除きます。

"inputs": {
    "from": "@body('選択-「親の投稿」と返信それぞれの投稿者のID一覧')",
    "where": "@not(equals(item(), null))"
},

このアクションの出力はこちらです。

「作成-重複を排除」アクション

このアクションは「データ操作」>「作成」です。union関数を使って配列内の重複する要素を取り除きます。

"inputs": "@union(body('アレイのフィルター処理-nullを排除'), body('アレイのフィルター処理-nullを排除'))",

このアクションの出力はこちらです。
※今回のテストデータでは重複がなかったため入力データがそのまま出力にでてきました。

「スコープ-投稿者IDの配列からnullと重複を排除」アクション

このアクションは「コントロール」>「スコープ」です。このスコープもフローの可読性を上げるために複数のアクションをグループ化するために使用します。

このスコープに含まれるアクションは下図の4つです。

「選択-「親の投稿」と返信それぞれの投稿者のdisplayName一覧」アクション

このアクションは「データ操作」>「選択」です。このアクションを使ってスレッドに投稿したユーザーの表示名を配列として取得します。

"inputs": {
    "from": "@variables('投稿一覧')",
    "select": "@item()?['from']?['user']?['displayName']"
},

このアクションの出力はこちらです。

「アレイのフィルター処理-nullを排除 2」アクション

このアクションは「データ操作」>「アレイのフィルター処理」です。配列からnull要素を取り除きます。

"inputs": {
    "from": "@body('選択-「親の投稿」と返信それぞれの投稿者のdisplayName一覧')",
    "where": "@not(equals(item(), null))"
},

このアクションの出力はこちらです。

「作成-重複を排除 2」アクション

このアクションは「データ操作」>「作成」です。配列内の重複する要素を取り除きます。

"inputs": "@sort(union(body('アレイのフィルター処理-nullを排除_2'), body('アレイのフィルター処理-nullを排除_2')))",

このアクションの出力はこちらです。
※今回のテストデータでは重複がなかったため入力データがそのまま出力にでてきました。

「作成-投稿者のdisplayNameの配列」アクション

このアクションは「データ操作」>「作成」です。投稿者の表示名一覧をconcat関数join関数を使って整形します。

concat('- ',join(outputs('作成-重複を排除_2'),' \r- '))

このアクションの出力はこちらです。

"- Adele Vance \\r- Alex Wilber \\r- Christie Cline \\r- Johanna Lorenz \\r- Miriam Graham"

今回の解説範囲で得た出力

1つの配列と1つのテキストを得ました。

1つの配列とは「スレッドに投稿にしたユーザーのID一覧」です。この配列はタグにメンバーを追加する際の入力情報として使用します。

1つのテキストとは「スレッドに投稿にしたユーザーの表示名一覧」です。この出力は「解説編その2」で触れるAdaptive Card のアクションでメンバー一覧を箇条書き形式で表示する際に使用します。

"- Adele Vance \\r- Alex Wilber \\r- Christie Cline \\r- Johanna Lorenz \\r- Miriam Graham"

次回「解説編その2」では更新対象のタグを選択する方法です

Adaptive Card を使ってフロー実行者から「メンバーを追加したいタグの指定」を取得します。


今回は以上です。

追記:「解説編その2」を投稿しました。

wataruf.hatenablog.com