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

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

Microsoft Teams のチャネルに添付されているファイルのフルパスをPower Automateで取得する(解説編)

※ 2022/4/21 追記:改良版のフローを公開しました。
wataruf.hatenablog.com

はじめに

この投稿は下記の概要編の続きです。
wataruf.hatenablog.com

解説

フロー全体図(再掲)

フローの全体図はこちらです。

ステップごとの解説

「選択したメッセージの場合」トリガー

任意の投稿(親の投稿 または 返信)を起点にしてフローを開始するトリガーです。フローの開始時に手動で入力させる情報は無いのでアダプティブカードの設定はしません。

「メッセージ詳細を取得する」アクション

次に、起点となった投稿の詳細情報を取得します。

フローの起点となった投稿が"返信"である場合に添付されているファイルのフルパスを取得するために、このアクションを使います。詳しくは以下の投稿に記載しました。
wataruf.hatenablog.com

「選択」アクション

添付ファイルのフルパス(contentUrl)を取得します。

"from": "@body('メッセージ詳細を取得する')?['attachments']",
"select": "@item()?['contentUrl']"

アクションの入力情報がこちらです。赤枠の部分を取得します。

アクションの結果、下図の出力が得られます。

「結合」アクション

添付ファイルが2つ以上ある場合に1行ずつ空けたテキストとして出力するために結合アクションを使います。

<br> が2つあるのは以下の理由です。
・1つめ ・・・ 改行するため
・2つめ ・・・ 1行あけるため

「変数を初期化する」アクション

フローボットが送信するチャットの本文を定義します。チャットを送信するアクションで直接本文を定義しようとするとHTMLタグを直書きするときに崩れることがあるので変数として定義するのがポイントです。

"name": "本文",
"type": "string",
"value": "チャネルの会話に添付されたファイルのパスを取得しました。<br>\n<br>\n【ファイルが添付された会話】<br>\n<a href=\"@{triggerBody()?['entity']?['teamsFlowRunContext']?['messagePayload']?['linkToMessage']}\">会話を開く</a><br>\n<br>\n【添付ファイルのパス】<br>\n@{body('結合_-_Selectの結果を改行(br)を挟んで結合する')}"
「マイプロフィールの取得(v2)」アクション

チャットの送信先であるユーザー(= フローを開始したユーザー)を取得するために使用します。

「チャットまたはチャネルでメッセージを投稿する」アクション

このアクションでチャットを送信します。

フローの実行結果(再掲)

フローを実行するとこんなチャットが自分宛てに届きます。

フローをGitHubに公開しました。

今回作成したフローをGitHubに公開しました
github.com

最後に

「選択したメッセージの場合」トリガーは使い道がまだだありそうなので、これからも何か思いついたら公開したいと思います。

以上です。