久しぶりにPowerAutomateハウツーです。
今回はわりと特殊な事例です。
2023/07/11更新
"Solution 2. Microsoft Graphを使う" を加筆。元々ご紹介していた方法では出席者の「追加」は処理できても「削除」はできませんでした。"Solution 2"ではこの問題が解消されています。
Background
- 組織内で運用している「とある制度」のため、PowerAutomateワークフローを利用して、組織の特定メンバーあてにTeams会議の会議出席依頼を送付している。
- Teams会議の会議出席依頼を初回送付したあと、会議の参加者が増減することがあり、その場合Teams会議の出席者の情報(Outlookでいえば
to
)を変更する必要がある。 - 参加者が多数におよび、かつ「参加者の増減」の後追いで幾度も発生する想定であるが、参加者(出席者)への通知は最小限としたい。
PowerAutomateで Teams会議を作成したあと会議情報を更新する場合、通常は次のような流れとなる:
- 「Teams会議の作成」アクションでTeams会議を作成(Outlookで自動的に会議出席依頼のメールが送信される)
- アクションの出力(Outputs)として得られるIDをどこかに記録しておく
- 後日出席者の追加が必要になったら、「イベントの更新」アクションで記録しておいたIDをキーにしてTeams会議(イベント)を更新(ここでもメールが自動送信される)
実際には「Teams会議の作成」と「イベントの更新」は別々のフローで、別々のタイミングで実行されることになるはずです。
Problem
先ほどの方法では 「イベントの更新」アクションが実行され、出席者が増減するたびに、出席者全員に Teams会議内容の更新を知らせるメールが送信されることになってしまう。
これでは参加者(出席者)への通知は最小限としたいという要件が実現できない。
Outlookで(人手で)同様のことをする場合、追加ないし削除された出席者にのみ通知を送るか、それとも全員に送るかを選択できます。
PowerAutomateでする場合、残念ながら少なくとも現時点では、選択肢はありません。
Solution 1. メール転送を使う
この方法はシンプルで比較的ローコードに要件を実現できるものの、出席者の「追加」はできても「削除」ができない問題を抱えています。これを回避するには "Solution 2. Microsoft Graphを使う" を採用してください。
出席者の「追加」について言えば、次のようにフローを変更することで、出席者全員への通知を回避できる:
- 「Teams会議の作成」アクションでTeams会議を作成、このとき会議のタイトルに何かしらの識別子を含めるようにする(Outlookで自動的に会議出席依頼のメールが送信される)
- 識別子をどこかに記録しておく
- 後日出席者の追加が必要になったら、「メールを取得する」アクションで #1で自動送信されたメッセージを取得
- アクションの出力(Outputs)として得られるメールのIDを使い「メールの転送」アクションを実行
これで、他の出席者への通知なしにTeams会議を更新することができる。オペレーションとしてはメールの転送であるが、それに紐づくTeams会議の情報(出席者)も更新されている。
Solution 2. Microsoft Graphを使う
Microsoft Graph APIを使用して、出席者の追加や削除を行う。
先程の方法(メール転送を使う)では、出席者の「追加」はサイレントに行えるが「削除」はできない。
削除についてサイレントに行える方法はないか探したところ、こちらの記事を発見した:
Add an attendee to an invite without emailing exis... - Power Platform Community
ここで紹介されている方法は、 Office 365 Outlookコネクターの「HTTP要求を送信します」アクションによりMicrosoft Graph APIをコールするもの:
各パラメーターは:
Left align | Right align | Center align |
---|---|---|
URL |
https://graph.microsoft.com/v1.0/me/calendars/ CalendarID /events/ EventID
|
EventID は「Teams会議の作成」アクションの出力から得られる。 CalendarID は「カレンダーの取得」アクションの出力から得られる。 |
メソッド | PATCH | 固定値 |
本文 | {"attendees": ... }} |
attendees プロパティのオブジェクトの構造(スキーマ)は、「イベントの取得」や「Teams会議の作成」アクションの出力内容を参照するとわかる。 |
コンテンツの種類 | application/json |
本文で指定した {"attendees": ... }}
の内容に基づいて出席者一覧が更新されるが、このとき差分の出席者(追加された方と削除された方)にのみメール通知が送信れる。
追加だけでなく削除のシナリオでも用いられる。