ささみ学習帳 - sasami's study book

ささみ学習帳

Microsoft365 や Power Platform について学んだこと・アイデアのメモ

Power Automate クラウドフローでGraph APIを使って Outlook の「イベントの取得(V4)」アクションより多くの情報を取得する

この記事は「Microsoft Power Automate Advent Calendar 2024」に参加しています。
シリーズ3 - 2日目の記事です。

qiita.com

 

 

はじめに

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)でも利用できます。

learn.microsoft.com

 

「イベントの取得」アクションより多くのアイテムが取得できるメリットがあります。例えば下記のような情報を取得することができます。

    • 出席者・リソースの表示名
    • オンラインミーティングか?
    • 会議URL
    • 場所の詳細情報(住所など)
    • イベントはキャンセル済みか?

 

取得できるプロパティ

同じチャットをGraph APIで取得した情報と「イベントを取得(V4)」アクションの出力を比較してみます。情報量の差は歴然です。

左が「イベントを取得(V4)」アクションの出力で、右がGraph APIで取得したイベントの出力です。

出席者・リソースの表示名

出席者及びリソースはattendeesアレイに格納されます。

  • type
    • required:必須出席者、optional:任意出席者、resource:リソースに対応します
  • name
    • ユーザーの表示名です。

アレイのフィルター処理アクションなどを使って必要な情報を取り出せます。

・オンラインミーティングか?

オンラインミーティングかはisOnlineMeetingで参照できます。

・会議URL

会議URLは onlineMeeting/joinUrl で参照できます。

・場所の詳細情報

Exchange Online でリソースにメタデータが設定されている場合はlocationから参照できます。

・イベントはキャンセル済み?

イベントはキャンセル済みかはisCancelledで参照できます。

 

非常に多数のプロパティが取得できますので、どのような情報が取得できるかは公式ページをご確認ください。

learn.microsoft.com

 

フロー全体図

サンプルフローの解説です。

 

フロー解説

1.フロー手動でトリガーする

今回はサンプルフローの為、このトリガーでユーザー操作で実行します。

 

2.[Office 365 Outlook]イベントの取得(V4)

まずイベントの取得アクションで情報を取得したいイベントを取得します。

  • 予定表ID
    • イベントを検索する予定表(カレンダー)を指定
  • フィルタークエリ
    • イベントを検索する条件を指定する
  • 並び替え順
    • お好みで

 

3.[Control]それぞれに適用する(For each)

 

3-1.[Office 365 Outlook]HTTP 要求を送信します-イベント取得v1

Graph APIでイベントを取得します

 

 

※サンプルフローでは使用していませんが、JSONの解析アクションを利用することで動的な値をして使うこともできます。JSONにまだ慣れていない場合はこちらを利用した方が良いかもしれません。

 

 

さいごに

「HTTP 要求を送信します」アクションでGraph APIを利用することで、Office 365 Outlook コネクタの制限を超えたことができるようになります。

すべてのGraph APIgが利用できるわけではないという点に注意が必要です。

 

また、Graph APIを利用することで、ローコードのクラウドフローとしては複雑さが格段に増します。業務利用する場合は後々の引継ぎができるかといった観点でもご利用は計画的にお考えください。