Power AutomateでOutlook予定表のイベント情報を取得する方法について解説
この記事では、 Power AutomateでOutlook予定表に登録されたイベントをExcelに書き出す方法について解説します。(この記事ではOutlookの予定をイベントと呼びます。)
作成するフローと3つのステップ
少し長くなってしまったので3つの記事に分けて解説しています!
今回は、下記の3つのステップでPower Automateフローをつくっていきます。この記事ではステップ1を解説します。
- イベントを取得する処理をつくる。(本記事で解説)
- Power Automateで取得したイベント時間を日本時間に変換する処理をつくる。(解説記事はコチラ)
- Excelに書きだす処理をつくる。
ポイントはステップ2の時間の変換処理です。Power Automateで時間を読み込むとUTC時間に変換されちゃいます。このため、Excelに書き込む前に日本時間に戻してやる必要があります。
追加するアクションはループアクション含めて6つです。30分ほどで作成できるかなと思います。
上の図はPower AutomateからExcelへ出力した結果ファイルです。
Power Automateでフローを作成する
Power Automateのフローの作成
今回はユーザが任意のタイミングでフローを実行できる、「インスタントクラウドフロー」の中にある「手動でフローをトリガーします。」というトリガーを使います。
▲作成 → インスタントクラウドフローをクリックします。
▲フロー名を入力 → 手動でフローをトリガーします。
▲アクションを追加します。
「Office365」コネクタの中にある「イベントの取得(v4)」をクリックします。2021年8月現在、イベントの取得(v3)とイベントの取得(v4)がありますが、古い方は廃止になることがあるので新しいv4を使っておけば良いかなと思います。
▲自分のMicrosoftアカウントに作成済みのカレンダーが一覧されますので、その中からターゲットとなるカレンダーを選択します。(Outlookデフォルトカレンダーはここでは「Calender」と表示されます。)
ここではデフォルトカレンダーであるCalenderを選択します。
▲「詳細オプションを表示する」をクリックします。
▲「フィルタークエリ」にパラメータを入力します。
Power Automateのフィルタークエリとは?(Odataフィルタークエリ)
簡単に説明すると、どういう条件でイベントを取得するかっていう条件です。
ここを空白にしてイベントを取得すると、過去のデータからドバーっと取得し始めちゃうので特定のイベントを探すのが大変ですし、一度に取得できる上限数制限によってエラーになってしまう可能性もあります。そこで、フィルタークエリを使って必要なイベントだけを取得します。
フィルタークエリとは欲しいイベントだけ取得するための条件文。
指定方法は、Power Automate独自の記述方法で指定します。次のセクションでフィルタークエリの構文について解説します。
ODataフィルタークエリを特定の日付で指定する方法
イベント開始日時はstart/dateTime
、イベント終了日時はend/dateTime
と書きます。
例文
イベント開始日時が2021年8月1日以降
start/dateTime ge ‘2021-08-01’
下記のように時間を含めて書くこともできます。
start/dateTime ge ‘2021-08-01T00:00:00.0000000’
演算子 | 説明 |
---|---|
lt | より小さい(lt:less thanの略) |
le | 未満または等しい(le:less than or equal toの略) |
gt | より大きい(gt:greater thanの略) |
ge | より大きいまたは等しい(ge:greater than or equal toの略) |
eq | 等しい(eq:equalの略) |
ne | 等しくない(ne:not equalの略) |
▲他にも、次のような演算子が利用できます。
演算子 | 説明 |
---|---|
〇〇 and □□ | 〇〇でも□□でもある。 |
〇〇 or □□ | 〇〇か□□のどちらかである。あるいは両方である。 |
▲下記の論理演算子も使えます。
例文
イベント開始日時が2021年8月1日~2021年8月31日
start/dateTime ge ‘2021-08-01’ and start/dateTime le ‘2021-08-31’
ODataフィルタークエリを日付以外で指定する方法
下記の関数を使えば、イベント名やイベント出席者などで検索できます。
演算子 | 説明 |
---|---|
startswith (パス, ‘文字列’) | (文字列)からはじまる |
contains(パス,’文字列’) | (文字列)を含む |
endsWith | (文字列)で終わる |
パスとは、イベントが持つ情報に含まれる要素です。イベント名、イベントの場所、イベント開催者、イベント開始日時などのことです。
パスの例
subject(イベント名)、location(イベントの場所)、organizer(イベント開催者)
例文
ミーティングという言葉から始まるイベント名
startswith(subject , ‘ミーティング’)
イベント開始日時が2021年8月1日~2021年8月31日、且つミーティングという言葉から始まるイベント名
startswith(subject , ‘ミーティング’) and start/dateTime ge ‘2021-08-01’ and start/dateTime le ‘2021-08-31’
イベント開始日時が2021年1月1日~2021年11月31日、且つ「リモート会議」という言葉を含むイベント名
contains(subject ,’リモート会議’) and (start/dateTime ge ‘2021-01-01’ and start/dateTime le ‘2021-11-30’)
どのようなパスがあるかは公式ドキュメント(複数のイベントを取得するアクション)を確認してください。(「GraphCalendarEventClientReceive」のところ)
フィルタークエリーについてはこちらの公式ドキュメント(クエリパラメータを使用して応答をカスタマイズする)も確認してください。
(補足)フィルタークエリに日付を使用するときは「時間から減算」アクションを使うといいです。
例文のcontains(subject ,’リモート会議’) and (start/dateTime ge ‘2021-01-01’ and start/dateTime le ‘2021-11-30’)は、実際に使うときは、UTCと日本時間の差を考慮して、「時間から減算」アクションで減算してから関数に使った方がいいです。(下図参照)
並び替え順を指定方法は?(ODataによる並び替え)
▲並び替え順を指定します。
並び変え順もPower Automate独自の書き方になります。指定方法は簡単です。
キーとなるパスを指定してasc(ascending:昇順)かdesc(descending:降順)かを指定するだけです。カンマで区切ることで、複数のキーで並び替えができます。
例文
イベント開始日時を昇順で並べる。
start/dateTime asc
イベント開始日時を降順で並べたあと、イベント名を昇順で並べる。
start/dateTime desc , subject asc
イベントの取得アクションのテスト
イベントの取得ができるか確認しましょう。
▲フローのテストをクリックします。
▲手動を選択しテストをクリックします。
▲フローの実行をクリックします。
▲フローが実行されましたら、イベントの情報が取得できているかを確認します。
▲イベントログの確認
図のようにイベントが取得できました。「未加工出力の表示」で確認できるログはJSONというデータ形式で出力されます。
JSONとは、キーとバリューをセットにデータを保持するデータ形式のことです。キーとバリューを:(コロン)で接続してペアにして格納します。アプリケーションの間でデータをやりとりする際に便利なので世界的によく使われています。
{
"subject": "仕事A",
"start": "2021-08-10",
"end": "2021-08-11",
"organizer":"poko@gmail.com",
}
▲たとえば上記のJSONの例でみると、Subjectというキーに”仕事A”というバリューが入っています。仕事AというOutlookイベントが取れたのだなぁということがわかります。仕事Aというイベントの開始時間は”2021-08-10”なのだとわかります。キーが英語になっているのでわかりにくいかとは思いますが、なんとなくどれがどのOutlookイベント情報にあたるかわかるのではないかなと思います。わからないときは ドキュメントを確認しましょう。
{
から}
までが、がひとつのOutlookイベント情報です。
まとめ
以上、Power Automateでイベントを取得する方法について解説しました。
冒頭でも解説したように、Power Automateのログを見てみると、実際のOutlookに登録されているイベントの開始時間・終了時間とログの時間に差がでてしまっているかと思います。これは、Power AutomateがUTC(世界標準時)で時間を取り扱っているためです。
このままExcelに書き込んでもズレた時間をそのまま出力してしまうため、日本時間に変換する必要があります。
次回の記事では、「Power Automateで取得したUTC時間を日本時間(UTC+9)に変換する」方法について解説します。
Power Automate学習教材
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。
▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。