Power PlatformとAppSheetのアレコレ蓄積ブログ

【Power Automate】本日の予定一覧をTeamsに自動通知する<#005>

やりたいこと1日の始めに本日の予定一覧をTeamsにチャットして欲しい
使うアプリ  
改善効果今日の会議等が一覧でパッと見できる(3分/日)
パッケージあり
いいね数
無くてもいいけどあったら便利

ポイント

  • 現在時刻~12時間後までの予定一覧を取得し、予定があったらTeamsチャットに通知する
  • 午前と午後で分けて出力する

前回(#004 Outlook独自リマインダーをAutomateで作る)の処理を少し修正して作っています。

手順

Power Automate 今日の予定一覧をTeamsにチャットしてくれるフロー作成

以下のような通知を出すことが出来ます

基礎的な操作手順が分からない方は以下をご参照ください。

Step.1 Power Automate 今日の予定一覧をTeamsにチャットしてくれるフロー作成

フローダウンロード&修正箇所

フローのパッケージは以下からダウンロードすることが可能です。また、インポート手順はこちらを参考にインポートを行ってみてください。1からフローを作らなくてもいいので、非常に効率的です。

また、インポート後の修正箇所を簡単に説明します。ここだけ変えればとりあえず動くだろうという箇所です。

修正対象のステップ

①繰り返し頻度

繰り返し頻度を好きな時間に変更します

②イベントの取得 (V4)

予定表IDを自分の予定表を選択します

③チャットまたはチャネルでメッセージを投稿する

Recipientを自分のアドレスに変更します

以上です。これでフローは動きますが、以降は各ステップの詳細を説明しています。必要な方のみご覧ください。

各ステップの説明

全体のフローは以下の通りです。

ステップごとに説明していきます。

Step.1-1 繰り返し

サンプルでは毎日8:45にフローが実行されるようになっています
好きなタイミングに変更します

注意

設定時刻を変更する場合、後続処理の「条件-予定が午前中か判定」の判定時刻を変更します

Step.1-2 outlookスケジューラから現在時刻~12時間後までの予定を取得する

Step.1-2-1 現在の時刻

現在の時刻を取得します

スケジューラから予定を取得するときの起点計算の為に取得します。

Step.1-2-2 時間への追加-12時間

[現在の時刻]から[12時間]追加します

12時間先までの予定を取得する為のセットです。18時間先までを取得したい場合は、12⇒18に変更します。

Step.1-2-3 イベントの取得 (V4)

フィルタークエリ、並べ替え順には以下のコードを記載します
[現在の時刻]、[算出時間]をセットします

コピーしました!

フィルタークエリ
start/dateTime ge '@{body('現在の時刻')}' and start/dateTime le '@{body('時間への追加-12時間')}'

コピーしました!

並べ替え順
start/dateTime asc

フィルタークエリで「開始時刻が現在時刻~12時間後までの予定」を抽出しています。並べ替え順は、開始時刻で昇順にしています。

フィルタークエリについてもっと知りたい方はこちらのサイトが分かりやすいです。

補足

Outlookから取得するデータの時刻は、9時間ずれています。これはUTCと日本時間との差異ですが、今回は「現在時刻」から計算するので時刻自体は何時でもいいので、日本時間への変換はしていません。

Step.1-3 変数の初期化

午前用の変数初期日に[<午前の予定><br>]、午後用の変数初期値に[<午後の予定><br>]をセットします

[<br>]を入れておくことで、Teams投稿時に改行してくれます。

Step.1-4 12時間後までの予定一覧を自分宛にチャットする

Step.1-4-1 取得した予定の繰返し処理

Step.1-2-3(イベントの取得 (V4))で取得したvalue(予定一覧)をセットします

12時間以内に、予定が1つだけであれば1回、3つあれば3回繰返し処理されます。

Step.1-4-2 タイム ゾーンの変換-開始時刻&タイム ゾーンの変換-終了時刻

予定の開始時刻と終了時刻を[HH:mm]形式で日本時間に変換します

Teamsに通知する際の参考情報の為に、日本時間に変換しています。終了時刻は日付を除いています。

Step.1-4-3 条件-予定が午前中か判定

左に以下の式、条件は[次の値以下]、右に[03:13:00]をセットします

コピーしました!

左側の式
dateDifference(items('取得した予定の繰返し処理')?['start'], body('現在の時刻'))

午前中の予定か判定しています。dateDifference関数は2つの日時の差異を計算してくれる関数です。

(予定の開始時刻ー現在時刻)をした結果、3:13以下であれば午前中と判定し、それ以上であれば午後と判定しています。

フローの開始時刻によって[03:13:00]を変更する必要はあります。サンプルは、8:45に実行される為、11:58までの予定は午前中としています。(2分はフロー実行遅延対応)

7:30にフローを実行する場合:04:28:00 に変更

8:00にフローを実行する場合:03:58:00 に変更

Step.1-4-4 条件-予定が午前中か判定(いいえの場合)

[出力文字列(午後)]に文字と動的なコンテンツをセットします

最後に<br>を入れることでTeams投稿時に改行できます。

Step.1-4-5 条件-予定が午前中か判定(はいの場合)

[出力文字列(午前)]に文字と動的なコンテンツをセットします

「いいえ」と違うのは、変数(出力文字列(午前))部分だけです。それぞれの変数に出力しておくことで、後で分かりやすくなります。

Step.1-4-6 条件-予定が1件以上あるか判定

[または]を選択し、右に以下の式、条件に[次の値以上]、右に[1]をセットします

コピーしました!

左側の式(1行目)
length(variables('出力文字列(午前)'))

コピーしました!

左側の式(2行目)
length(variables('出力文字列(午後)'))

予定が1件も無い場合は通知させたくないので、出力文字列が1文字以上かどうかで判定しています。

Step.1-4-11 条件-予定が1件以上あるか判定(いいえの場合)

終了ステップで[成功]をセットします

予定が1件も無い場合は後続処理に進まず、ここで処理終了とします。

Step.1-4-12 チャットまたはチャネルでメッセージを投稿する

投稿者に[フローボット]、投稿先に[Chat with Flow bot]、Recipientに自分、Messageに[出力文字列(午前)]と[出力文字列(午後)]をセットします

今まで作成したデータをTeamsのフローボットを使って自分宛にチャットするようにしています。メールに置換えてもいいですし、通知先に上長を含めるのも面白いかもしれません。

以上でフローの説明は終了です。正しく動くと、以下のような通知が届きます。

実運用時に気を付けること

  • 予定をスケジューラにしっかりと入れること
  • 「今日」ではなく、「12時間」という時間設定の為、夜勤等でも汎用的に使える一方、設定を間違えると午前午後の判別が出来なくなるので注意

本記事で参照させていただいたサイト様

いつも大変参考になる情報をありがとうございます。

この記事は参考になりましたか?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA