スタッフの五十島です。
今回はPower Automateについての記事になります!
社内の作業を自動化する際に、チームのチャンネルチャットのスレッドごとに一括処理を行いたいと思ったことはありませんか?
しかし、Power Automateの標準のアクションではスレッドごとの処理を実現することができませんでした・・・
そこで手段がないか調べてみると、Microsoft Graphにはスレッドの返信を取得するためのAPIが用意されていることがわかりましたので、Power AutomateからそのAPIを利用してみました!
Power AutomateからMicrosoft Graphを利用する方法
Power AutomateからMicrosoft GraphのAPIを利用する場合、主に以下のプレミアムコネクタを利用します。
- HTTP→HTTP
- HTTP with Azure AD→HTTP 要求を呼び出します
- Power Platformのカスタムコネクタを作成
しかし、今回のAPIの場合は、無料で利用できる【Office 365 Groups→HTTP 要求を送信します】を利用することができましたので、この方法を紹介したいと思います!
※他にもAPIを呼び出せるコネクタがありますが、コネクタによって利用できるAPIが制限される場合がありますのでご注意ください!
※私の環境では、アクセス許可の関係でAPIのv1.0からの利用はできませんでしたが、betaからの利用は可能でした。APIを利用する場合は、適切な許可を管理者から受ける必要がある場合があります。
APIリファレンス:チャネル メッセージの応答を一覧表示する – Microsoft Graph beta | Microsoft Learn
手順
- 【Office 365 Groups→HTTP 要求を送信します】をフローに追加します。
- URLにAPIのエンドポイントを入力します。このとき、対象のチームID、チャンネルID、およびメッセージIDを正確に指定してください。動的なコンテンツを挿入することも可能です。
例:https://graph.microsoft.com/beta/teams/fbe2bf47-16c8-47cf-b4a5-4b9b187c508b/channels/19:4a95f7d8db4c4e7fae857bcebe0623e6@thread.tacv2/messages/1616989510408/replies
- 【データ操作→JSONの解析】をフローに追加します。
- 【JSONの解析】のコンテンツに【動的コンテンツ→HTTP 要求を送信します→body】を選択します。
- 【JSONの解析】のサンプルから生成を選択しリファレンス内の応答サンプルのJSONを流し込むと、自動でスキーマが生成されます。
これで、Power Automateを使用して親投稿に関連付けられた返信を処理することができます!
JSONの解析により、返信一件ごとの投稿情報を動的コンテンツとして選択できるようになるため、Apply to eachアクションを使用して簡単に処理できます!これがやりたかった・・・
デフォルトでは最新の20件までしか取得できませんが、末尾にreplies?top=50のように追加することで最大50件まで取得することが可能です!
また、【選択されたメッセージに対して】というトリガーを使用する場合、以下の式を使うことで返信を選んでも常にスレッドの親投稿のIDを取得できます!
if(empty(triggerBody()?['teamsFlowRunContext']?['messagePayload']?['replyToId']),triggerBody()?['teamsFlowRunContext']?['messagePayload']?['id'],triggerBody()?['teamsFlowRunContext']?['messagePayload']?['replyToId'])
この他にも、Power Automateで提供されていないけれどMicrosoft Graphに存在する機能について、同様にAPIから取得することができるかもしれません。
この記事が皆さんの参考になれば幸いです!ぜひお試しください👍