この記事は「Microsoft Power Automate Advent Calendar 2024」に参加しています。
シリーズ3 - 2日目の記事です。
はじめに
Office 365 Outlook コネクタの「イベントを取得」アクションを使ってイベントの情報を取得することができます。
しかし、出力として参照できるプロパティがやや少なめです。ほとんどのケースでは十分なものがありますが、例えばTeams会議のURLやイベントがキャンセル済みか?といった情報は取得できません。
(参考)イベントの取得(V4)アクションで取得できるプロパティ
動的な値 | 概要 | 対応するjsonアイテム |
件名 | イベントの件名 | subject |
開始時刻 | イベントの開始時刻(例:'2017-08-29T04:00:00.00000000') | start |
終了時刻 | イベントの終了時刻(例:'2017-08-29T04:00:00.00000000') | end |
タイムゾーンが指定された開始時刻 | タイムゾーンが指定されたイベントの開始時刻 (例:'2017-08-29T04:00:00.00000000+00:00') |
startWIthTimeZone |
タイムゾーンが指定された終了時刻 | タイムゾーンが指定されたイベントの終了時刻 (例:'2017-08-29T04:00:00.00000000+00:00') |
endWithTimeZone |
項目 | Graph APIを使用したクライアント用の コネクタ固有のカレンダーイベントモデルクラス |
|
body/value | 予定項目のリスト | |
本文 | Graph APIによって返された予定表アイテムの一覧 | |
本文 | イベントに関連づけられたメッセージの本文 | body |
HTML | 本文がHTMLの場合はtrueに設定します | isHtml |
応答の種類 | イベントの応答の種類(なし、開催者、仮承諾、辞退、または未返信) | responseType |
応答時間 | イベントの応答時間 | responseTime |
ID | イベントの一意識別子 | id |
作成時刻 | イベントが作成された日時 | createdDateTime |
最終変更時刻 | イベントが最後に変更された日時 | lastModifiedDateTime |
開催者 | イベントの開催者 | organizer |
タイムゾーン | イベントのタイムゾーン | timeZone |
シリーズマスターID | シリーズマスターというイベントの種類の一意識別子 | seriesMasterId |
iCalUId | カレンダー全体のイベントを表す一意識別子、 このIDは定期的な繰り返しの発生ごとに異なります |
iCalUId |
カテゴリ | イベントに関連づけられたカテゴリ | categories |
カテゴリ項目 | ||
Webリンク | Outlook Wen Appでイベントを開くためのURL | webLink |
必須出席者 | セミコロンで区切られたイベントの必須出席者 | requiredAttendees |
任意出席者 | セミコロンで区切られたイベントの任意出席者 | optionalAttendees |
リソース出席者 | セミコロンで区切られたイベントのリソース出席者 | resourceAttendees |
場所 | イベントの場所 | location |
重要度 | イベントの重要度:低、標準、高 | importance |
終日イベントですか? | イベントが終日である場合はtrueに設定します | isAllDay |
繰り返し | イベントの定期的なパターン:なし、毎日、毎週、毎月、または毎年 | recurrence |
繰り返しの終了日 | 繰り返しの終了日 | recurrenceEnd |
発生回数 | イベントを繰り返す回数 | numberOfOccurences |
アラーム | イベントのアラームが開始されるまでの時間 | reminderMinutesBeforeStart |
リマインダーをオンにする | イベントをユーザーに通知するようにアラームが設定されている 場合はtrueに設定します |
isReminderOn |
表示方法 | イベント中に表示する状態: 空き状態、仮の予定、予定あり、外出中、他の場所で作業中、または不明 |
showAs |
応答の要求 | イベントが承諾または辞退されたときに 送信者が応答を希望する場合はtrueを設定します |
responseRequested |
機密度 | 可能な値は次のとおりです:標準、個人、非公開、機密 | sensitivity |
Graph API を使えばもっと取得できる
ですが、Graph API を利用することでもっと多くのチャットを取得することができます。Office 365 Outlook コネクタの「Microsoft Graph HTTP 要求を送信します」アクションから実行できますので、Premiumコネクタが利用できないPower Automate Basicライセンス(Microsoft 365 付属のPower Automate)でも利用できます。
「イベントの取得」アクションより多くのアイテムが取得できるメリットがあります。例えば下記のような情報を取得することができます。
-
- 出席者・リソースの表示名
- オンラインミーティングか?
- 会議URL
- 場所の詳細情報(住所など)
- イベントはキャンセル済みか?
取得できるプロパティ
同じチャットをGraph APIで取得した情報と「イベントを取得(V4)」アクションの出力を比較してみます。情報量の差は歴然です。
左が「イベントを取得(V4)」アクションの出力で、右がGraph APIで取得したイベントの出力です。
・出席者・リソースの表示名
出席者及びリソースはattendeesアレイに格納されます。
- type
- required:必須出席者、optional:任意出席者、resource:リソースに対応します
- name
- ユーザーの表示名です。
アレイのフィルター処理アクションなどを使って必要な情報を取り出せます。
・オンラインミーティングか?
オンラインミーティングかはisOnlineMeetingで参照できます。
・会議URL
会議URLは onlineMeeting/joinUrl で参照できます。
・場所の詳細情報
Exchange Online でリソースにメタデータが設定されている場合はlocationから参照できます。
・イベントはキャンセル済み?
イベントはキャンセル済みかはisCancelledで参照できます。
非常に多数のプロパティが取得できますので、どのような情報が取得できるかは公式ページをご確認ください。
フロー全体図
サンプルフローの解説です。
フロー解説
1.フロー手動でトリガーする
今回はサンプルフローの為、このトリガーでユーザー操作で実行します。
2.[Office 365 Outlook]イベントの取得(V4)
まずイベントの取得アクションで情報を取得したいイベントを取得します。
- 予定表ID
- イベントを検索する予定表(カレンダー)を指定
- フィルタークエリ
- イベントを検索する条件を指定する
- 並び替え順
- お好みで
3.[Control]それぞれに適用する(For each)
3-1.[Office 365 Outlook]HTTP 要求を送信します-イベント取得v1
Graph APIでイベントを取得します
- URI
- https://graph.microsoft.com/v1.0/me/events/@{items('For_each')?['id']}
- イベントの取得アクションの出力にあるIDを指定します
- メソッド
- GET
※サンプルフローでは使用していませんが、JSONの解析アクションを利用することで動的な値をして使うこともできます。JSONにまだ慣れていない場合はこちらを利用した方が良いかもしれません。
さいごに
「HTTP 要求を送信します」アクションでGraph APIを利用することで、Office 365 Outlook コネクタの制限を超えたことができるようになります。
すべてのGraph APIgが利用できるわけではないという点に注意が必要です。
また、Graph APIを利用することで、ローコードのクラウドフローとしては複雑さが格段に増します。業務利用する場合は後々の引継ぎができるかといった観点でもご利用は計画的にお考えください。