Teamsメッセージには添付ファイルを含めることが可能です。
このように表示されます。
このメッセージをPower Automateで分析する方法を考えてみます。
トリガーで受け取る
[自動化したクラウドフロー]->[チャネルに新しいメッセージが追加されたとき]
または
[インスタントクラウドフロー]->[選択したメッセージに対して]
のいずれかでメッセージを受け取ります。今回は後者で取得します。
以下のようなフローを作成します。
このフローは、Teamsの「…」をクリックして実行できます。
実行結果を見ると以下のようなデータになっていることがわかります。
なんとなく以下の部分が添付ファイルのように思えますが、attachment id に関する情報はこれしか含まれていません。
"Body": {
"ContentType": "text",
"Content": "今日もテスト<attachment id=\"b2acb6d0-2229-4856-a6d2-6d8b374d****\"></attachment>",
"PlainText": "今日もテスト<attachment id=\"b2acb6d0-2229-4856-a6d2-6d8b374d****\"></attachment>"
}
ということで詳細を取得してみます。
同じように出力結果を見てみると今度はattachments が含まれていました
"attachments": [
{
"id": "b2acb6d0-2229-4856-a6d2-6d8b374d****",
"contentType": "reference",
"contentUrl": "https:/*****.sharepoint.com/sites/msteams_******/Shared Documents/General/OfficeScriptとは.pptx",
"content": null,
"name": "OfficeScriptとは.pptx",
"thumbnailUrl": null
}
],
この contentUrl が欲しいですよね。
しかしcontentUrlらしきものが出てきません。このような場合、JSONデータの中身を直接参照してあげる必要があります。
以下のようにしてみます。
body('メッセージの詳細を取得する)?['attachments/contentUrl']
これを実行するとエラーは出ませんが、文字列はEmpty(から)になります。attachmentsはアレイになっているので一度アレイ型変数に入れてから取り出してみましょう。
※「変数を初期化する」の値は body('メッセージ詳細を取得する')?['attachments']
※「文字列変数に追加」の値は items('Apply_to_Each')?['contentUrl']
今度は値が取れています。
まとめ
ポップアップで自動的に取得できない属性がありますが、item()?[//ここの値を自分で式に追加//] することで取得できます。一度テスト実行してJSONの中身を確認することができます。もし配列になっているようであれば、一度アレイ変数に代入してから参照するとよいでしょう。