PowerAutomate x Outlook x Teams | カレンダー | 本日の予定を連絡する

PowerAutomate x Outlook x Teams | カレンダー | 本日の予定を連絡する

今日も今日とてPowerAutomateの検証です。

今日は Outlookのスケジュール情報を取得して、Teamsへ連絡する方法を調べます。

作りたいモノ

今回は、手動でフローを起動した際、Outlookに登録しているカレンダーのうち、当日のスケジュールのみ抽出し、Teamsに報告する流れを作ります。

Outlookは以下の様なスケジュールの場合

Teamsに以下のような通知がされればOKです。

作ったフロー

以下のようなフローを作ってみました。

時差対応がめんどくさい…

今日のデータを取得するためには、utcNow()関数を使いますが、日本時間から9時間前の時間が戻り値となります。

日本時間にするには「addHours(utcNow(),9,’yyyy-MM-dd’)」とする必要があります。

※addHoursは時間を加算(減算)する関数で、記述は「addHours(時間, 追加する時間, フォーマット)」となります。

①今日の日付を取得

addHours(utcNow(),9,'yyyy-MM-dd')

②カレンダー情報を取得する

イベントの取得(V4)を利用します。

今日のカレンダー情報を取得するには「フィルタークエリ」を利用します。

フィルタクエリは「oData」で書きますが、書き方は以下を参照ください。

フィルタクエリ

(私の場合だけかもしれませんが…)Outlook365から取得できるカレンダーのイベント情報が、Outlookから見た場合は日本時間ですが、PowerAutomateで取得したデータは「9時間」の時差が発生していました。そこでフィルタリングする際も、以下のような表記を行いました。

今日の日付(例:2022/06/03 00:00:00)から -9時間した日時「以上(ge)」

今日の日付+1日(例:2022/06/04 00:00:00)から-9時間した日時「未満(lt)」

Start/datetime ge '@{addHours(variables('Today'),-9)}' 
 and 
Start/datetime lt '@{addHours(addDays(variables('Today'),1),-9)}'

並び替え順

oDataのorderbyクエリを記載します。今回はStart時間で昇順としたいため以下のように記載します。

Start/datetime asc

③データ格納用の変数を初期化

以下の変数3つを初期化します。

④Jsonデータを作成する

Teamsに投稿する際、HTMLテーブルで通知します。

そのためにデータをJson形式で作成します。

カレンダーのイベント情報から取得される時間は「9時間」の時差が含まれている状態なので、以下の処理を行っています。

開始時間↓

addHours(variables('Kaishi'),9,'yyyy/MM/dd HH:mm:ss')

終了時間↓

addHours(variables('Syuryo'),9,'yyyy/MM/dd HH:mm:ss')

⑤HTMLテーブルを作成し、Teamsに投稿

HTMLテーブルの作成を行い、その出力結果をTeamsに投稿します。

次回の記事ではGoogleカレンダからのデータ取得→Teams投稿の方法を検証します。

以上です。

エラー: データの取得に失敗しました。