Tech Note

Azure, Office 365, Power Platform, etc... の勉強手記

Power Automate で指定した日付の予定表のイベント一覧を取得する

コネクタ

今回使うコネクタは イベントの取得 (V4) [ Get events (V4) ] です。

コネクタの説明にもある通り、内部的には Microsoft Graph API が呼ばれています。
コネクタでわからないことがある場合は Microsoft Graph API のドキュメントを見に行くと良いでしょう。

docs.microsoft.com

やりたいこと

  • まずは予定表のイベント一覧を取得する
  • さらに指定した日付に絞り込んでイベント一覧を取得する(例として 6/22 のイベント一覧を取得します)
  • 取得したイベント一覧をイベントの開始時刻順に並べる

設定内容

結論から書くと、6/22 のイベント一覧を取得するために設定したパラメーターは以下の通りです。

f:id:shibatea:20200622203625p:plain

パラメーター
予定表ID 取得したい予定表ID
フィルター クエリ start/dateTime ge '2020-06-21T15:00:00' and start/dateTime lt '2020-06-22T15:00:00'
並べ替え順 start/dateTime
上から順に取得 (なし)
スキップ数 (なし)

6/22 のイベント一覧を取得する場合は、イベントの開始時刻を『6/22 0時0分 以上』、『6/23 0時0分 未満』で絞り込む必要があります。

しかし、Power Automate で日付を扱うときはタイムゾーンUTC にする必要があります。その為、フィルター クエリに設定する時刻は次のような UTC 時刻を設定する必要があります。

  • '2020-06-21T15:00:00' 以上(ge)
  • '2020-06-22T15:00:00' 未満(lt)

ODATA フィルタークエリについては、以下のドキュメントが参考になります。

docs.microsoft.com

苦労したこと

フィルター クエリに指定するプロパティを探し当てるのに苦労しました。

フィルター クエリなしでイベント一覧を取得したときの出力結果は以下の通りでした。(詳細は省略)

[
  {
    "subject": "夕会",
    "start": "2020-06-22T08:00:00.0000000",
    "end": "2020-06-22T08:30:00.0000000",
  },
  {
    "subject": "朝会",
    "start": "2020-06-22T00:00:00.0000000",
    "end": "2020-06-22T00:30:00.0000000",
  }
]

開始時刻のプロパティは "start" なんだなぁと思って、フィルター クエリに "start" でフィルターしたところエラーになりました。

f:id:shibatea:20200622203831p:plain

Microsoft Docs でイベントのプロパティを確認すると、開始時刻は dateTimeTimeZone という型らしい。 Microsoft Graph API『イベントを取得する』の応答結果の例を確認するとわかりやすいと思います。

docs.microsoft.com docs.microsoft.com

以下のように入れ子になってる場合は、スラッシュを交えて指定する必要があります。今回のケースで言うと "start/dateTime" となります。

f:id:shibatea:20200622205839p:plain

まとめ

フィルター クエリの指定方法、特に日付を指定する場合はハマりポイントかなと思い記事を書きました。

Microsoft Graph API に対する理解が深まれば、Power Automate の勘所も備わってくると思います。 何か躓いたら Microsoft Graph API のドキュメントを見ると良いでしょう。