Power Automate で指定した日付の予定表のイベント一覧を取得する
コネクタ
今回使うコネクタは イベントの取得 (V4) [ Get events (V4) ] です。
コネクタの説明にもある通り、内部的には Microsoft Graph API が呼ばれています。
コネクタでわからないことがある場合は Microsoft Graph API のドキュメントを見に行くと良いでしょう。
やりたいこと
- まずは予定表のイベント一覧を取得する
- さらに指定した日付に絞り込んでイベント一覧を取得する(例として 6/22 のイベント一覧を取得します)
- 取得したイベント一覧をイベントの開始時刻順に並べる
設定内容
結論から書くと、6/22 のイベント一覧を取得するために設定したパラメーターは以下の通りです。
パラメーター | 値 |
---|---|
予定表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 フィルタークエリについては、以下のドキュメントが参考になります。
苦労したこと
フィルター クエリに指定するプロパティを探し当てるのに苦労しました。
フィルター クエリなしでイベント一覧を取得したときの出力結果は以下の通りでした。(詳細は省略)
[ { "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" でフィルターしたところエラーになりました。
Microsoft Docs でイベントのプロパティを確認すると、開始時刻は dateTimeTimeZone という型らしい。 Microsoft Graph API の『イベントを取得する』の応答結果の例を確認するとわかりやすいと思います。
docs.microsoft.com docs.microsoft.com
以下のように入れ子になってる場合は、スラッシュを交えて指定する必要があります。今回のケースで言うと "start/dateTime" となります。
まとめ
フィルター クエリの指定方法、特に日付を指定する場合はハマりポイントかなと思い記事を書きました。
Microsoft Graph API に対する理解が深まれば、Power Automate の勘所も備わってくると思います。 何か躓いたら Microsoft Graph API のドキュメントを見ると良いでしょう。