LoginSignup
1
2

PowerAutomate:会議の出席者追加時に出席者全員に通知したくない

Last updated at Posted at 2023-05-30

久しぶりにPowerAutomateハウツーです。
今回はわりと特殊な事例です。

2023/07/11更新
"Solution 2. Microsoft Graphを使う" を加筆。元々ご紹介していた方法では出席者の「追加」は処理できても「削除」はできませんでした。"Solution 2"ではこの問題が解消されています。

Background

  • 組織内で運用している「とある制度」のため、PowerAutomateワークフローを利用して、組織の特定メンバーあてにTeams会議の会議出席依頼を送付している。
  • Teams会議の会議出席依頼を初回送付したあと、会議の参加者が増減することがあり、その場合Teams会議の出席者の情報(Outlookでいえば to )を変更する必要がある。
  • 参加者が多数におよび、かつ「参加者の増減」の後追いで幾度も発生する想定であるが、参加者(出席者)への通知は最小限としたい。

PowerAutomateで Teams会議を作成したあと会議情報を更新する場合、通常は次のような流れとなる:

  1. 「Teams会議の作成」アクションでTeams会議を作成(Outlookで自動的に会議出席依頼のメールが送信される)
  2. アクションの出力(Outputs)として得られるIDをどこかに記録しておく
  3. 後日出席者の追加が必要になったら、「イベントの更新」アクションで記録しておいたIDをキーにしてTeams会議(イベント)を更新(ここでもメールが自動送信される)

あえて1つのフローでやるとしたらこう:
image.png

実際には「Teams会議の作成」と「イベントの更新」は別々のフローで、別々のタイミングで実行されることになるはずです。

Problem

先ほどの方法では 「イベントの更新」アクションが実行され、出席者が増減するたびに、出席者全員に Teams会議内容の更新を知らせるメールが送信されることになってしまう。
これでは参加者(出席者)への通知は最小限としたいという要件が実現できない。

Outlookで(人手で)同様のことをする場合、追加ないし削除された出席者にのみ通知を送るか、それとも全員に送るかを選択できます。
PowerAutomateでする場合、残念ながら少なくとも現時点では、選択肢はありません。

Solution 1. メール転送を使う

この方法はシンプルで比較的ローコードに要件を実現できるものの、出席者の「追加」はできても「削除」ができない問題を抱えています。これを回避するには "Solution 2. Microsoft Graphを使う" を採用してください。

出席者の「追加」について言えば、次のようにフローを変更することで、出席者全員への通知を回避できる:

  1. 「Teams会議の作成」アクションでTeams会議を作成、このとき会議のタイトルに何かしらの識別子を含めるようにする(Outlookで自動的に会議出席依頼のメールが送信される)
  2. 識別子をどこかに記録しておく
  3. 後日出席者の追加が必要になったら、「メールを取得する」アクションで #1で自動送信されたメッセージを取得
  4. アクションの出力(Outputs)として得られるメールのIDを使い「メールの転送」アクションを実行

image.png
image.png

これで、他の出席者への通知なしに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をコールするもの:
image.png

各パラメーターは:

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": ... }}の内容に基づいて出席者一覧が更新されるが、このとき差分の出席者(追加された方と削除された方)にのみメール通知が送信れる。
追加だけでなく削除のシナリオでも用いられる。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2