やりたいこと | Outlookスケジューラの通知が気付きにくい為、直近1時間の予定をTeamsに通知したい |
使うアプリ | |
改善効果 | 会議をすっぽかすことが無くなる(??/回) |
パッケージ | あり |
いいね数 | |
ポイント
- 直近1時間の予定を取得し、予定があったらTeamsチャットに通知する
- 定期実行時刻と取得する対象予定範囲を工夫して、遅れたとしても気付けるようにする
なお、Outlookの設定で前面にポップアップ通知を出すことはできます。
手順
以下のような通知を出すことが出来ます
Power Automateの基礎的な操作が分からない方は以下をご参照ください。
Step.1 Power Automate Outlook独自リマインダーフロー作成
フローのパッケージは以下からダウンロードすることが可能です。また、インポート手順はこちらを参考にインポートを行ってみてください。1からフローを作らなくてもいいので、非常に効率的です。
また、インポート後の変更箇所を簡単に説明します。ここだけ変えればとりあえず動くだろうという箇所です。
①繰り返し頻度
繰り返し頻度を好きな時間に変更します
②イベントの取得 (V4)
予定表IDを自分の予定表を選択します
③チャットまたはチャネルでメッセージを投稿する
Recipientを自分のアドレスに変更します
以上です。これでフローは動きますが、以降は各ステップの詳細を説明しています。必要な方のみご覧ください。
全体のフローは以下の通りです。
ステップごとに説明していきます。
Step.1-1 繰り返し
サンプルでは毎時間02分と32分にフローが実行されるようになっています
02分の1回だけや、02分・17分・32分・47分の4回等、好きなように変更してください
開始時刻を2分ずらしているのは、最悪2分遅れても気付けるようにする為です。
Step.1-2 outlookスケジューラから現在時刻ー5分~+55の予定を取得する
現在の時刻を取得します
スケジューラから予定を取得するときの起点計算の為に取得します。
時間からの減算は[5分]、時間への追加は[55分]をセットします
これで現在時刻から5分前~55分後の1時間という範囲を日時として取得できます。(例:現在が10:02なら9:57~10:57を取得している)
理由は、次のステップで予定の取得をする際に、過去の予定も取得したい為。
フィルタークエリ、並べ替え順には以下のコードを記載します
前の算出時間は[時間からの減算-5分]、後の算出時間は[時間への追加-55分]をセットします
コピーしました!
start/dateTime ge '@{body('時間からの減算-5分')}' and start/dateTime le '@{body('時間への追加-55分')}'
コピーしました!
start/dateTime asc
フィルタークエリで「開始時刻が現在時刻-5分~現在時刻+55分の予定」を抽出しています。並べ替え順は、開始時刻で昇順にしています。
フィルタークエリについてもっと知りたい方はこちらのサイトが分かりやすいです。
Step.1-3 変数の初期化
後続で使用する変数です。
Step.1-4 直近1時間の予定について開始時刻を判定し自分宛にチャットする
Step.1-2-3(イベントの取得 (V4))で取得したvalue(予定一覧)をセットします
直近1時間内に、予定が1つだけであれば1回、3つあれば3回繰返し処理されます。
予定の開始時刻と終了時刻を[HH:mm]形式で日本時間に変換します
Teamsに通知する際の参考情報の為に、日本時間に変換しています。
左に[開始時刻]、条件は[次の値以下]、右に[現在の時刻]をセットします
開始時刻は動的なコンテンツに出てこないかもしれないので、その場合は以下のコードを式で入力してください
コピーしました!
items('取得した予定の繰返し処理')?['start']
予定の開始時刻が過ぎていないかを判定しています。
アラート文字列変数に[<予定>]をセットします
開始時刻を過ぎていない未来の予定なので、<予定>という文字をセットしています。
条件ステップで、左は[リマインドステータス]、条件は[次の値に等しい]、左は[true]をセットします
開始時刻が過ぎているかつ、リマインドがonになっている場合は、気付きを与えてあげる為のステップです。
アラート文字列変数に[対象外]とセットします
開始時刻が過ぎていても、リマインドがoffになっていれば(「アラームを消す」を行っていれば)通知しないようにしています。
アラート文字列変数に以下の式と、[!!分 過ぎています!!]という文字をセットします
コピーしました!
formatDateTime(dateDifference(items('取得した予定の繰返し処理')?['start'], body('現在の時刻')), 'mm')
開始時刻が過ぎていて、リマインドがoffになっていない(「アラームを消す」を行っていない)場合は、通知を出すようにしています。
なお、dateDifference関数で2つの日時の差異を算出してくれます。詳しくはこちらで解説してくれています。
右に[アラート文字列]、条件に[次の値に等しい]、左に[対象外]をセットします
1つ前のステップで[対象外]とした予定については通知したくないので、この条件をセットしています。
出力文字列変数に、画像の通りセットします
文字は直接入力、他は動的なコンテンツから選択します
取得した予定を文字列変数に追加しています。最後の[<br>]は改行コードです。これが無いとTeamsチャット時に改行してくれません。1つの予定に対し1行で出力されます。
また、アラート文字列には「<予定>」もしくは「!!xx分 過ぎています!!」のどちらかがセットされています。
右に以下の式、条件に[次の値以上]、右に[1]をセットします
コピーしました!
length(variables('出力文字列'))
予定が1件も無い場合は通知させたくないので、出力文字列が1文字以上かどうかで判定しています。
終了ステップで[成功]をセットします
予定が1件も無い場合は後続処理に進まず、ここで処理終了とします。
投稿者に[フローボット]、投稿先に[Chat with Flow bot]、Recipientに自分、Messageに[出力文字列]をセットします
今まで作成したデータをTeamsのフローボットを使って自分宛にチャットするようにしています。メールに置換えてもいいですし、通知先に上長を含めるのも面白いかもしれません。
以上でフローの説明は終了です。正しく動くと、以下のような通知が届きます。(1行目は2分すぎている予定、2行目はこれからの予定)
Step.2 アラームをかける&消す運用を心がける
それぞれの予定にアラームがセットされていることが前提です。また、[アラームを消す]作業をすることで見逃している予定の気付きにも役立ちます。
このフローを使用する場合は、なるべく「アラームをかける」「アラームを消す」運用を心がけるといいと思います。
実運用時に気を付けること
- 予定をスケジューラにしっかりと入れること
- 実行回数を増やしすぎると煩いです
似たようなもので「今日の予定一覧をTeamsにチャットしてくれるフロー」も作ってみました。
いつも大変参考になる情報をありがとうございます。
この記事は参考になりましたか?