SharePoint リスト と Power Automate を利用して、タスクの締切日前日に通知する方法です。
Microsoft 365 のライセンスがあれば実現できます。
今回は同日に複数のタスクの締切が来ることを想定しています。
最終的に以下のような通知が来るフローです。
1日1タスクなら、こっちのやり方の方が単純で良いかなと思います。
どちらもごひいきによろしくお願いいたします。
前提条件
- フローはモダンデザイナーで作成しています。
- Microsoft 365 のライセンスが必要です。
- フィルタークエリで内部列名を使用します。その為、SharePoint リストの締切日の列を日本語にする場合は、最初に英語でつけてから、日本語に直した方が良いです。
内部列名って何?って方はヨウセイさんの記事を参照してください。
SharePoint リストの用意
以下の様にタスク名と締切日が格納できる SharePoint リストを用意します。
Power Automate 側の設定
全体像
毎日、明日締切のタスクがあるかどうかを確認して、あった場合だけ Teams に通知するフローです。
今回は同日に複数のタスクの締切が来ることを想定しています。
フローの作成
明日の日付の取得
SharePoint リストに格納されている締切日の前日かどうかを判断するためには、Power Automate で明日の日付を取得します。
-
これで今日の日付が協定世界時で取得できます。
通知を必要とする人のタイムゾーンが協定世界時ならこのままで良いのですが、私は日本にいるので次の手順で日本標準時に直していきます。 -
アクションの追加から「タイムゾーンの変換」を追加します。
-
Time Unit を短い日付のパターンにします。
-
アクションの追加から「時間への追加」を追加します。
-
Interval を「1」、Time Unit を「Day」にします。
これで今日の日付に「1日」追加された日付が取得できます。
-
変数を初期化するアクションを追加します。
-
変数の名前を入力し、Type を「String(文字)」にします。
変数名は何でもよいです。
ただ半角英数字の方がトラブルが起きにくいので、半角英数字での名づけを推奨します。 -
Value の部分には式を入力します。
formatDateTime(body('時間への追加'),'yyyy-MM-dd')
-
式を保存(更新)します。
これで明日の日付が「2024-03-03」という形式で取得できました。
この形式は SharePoint の日付の形式に合わせています。
タスクリストから明日のタスクだけを抽出する
-
「サイトのアドレス」とリスト名を設定します。
-
フィルタークエリ に以下の式を入力します。
内部列名 eq ''
eq はいイコールという意味です。
eq の前後には半角スペースが入ります。 -
シングルクォーテーションの間に変数のアクションを初期化する の変数を入れます。
これでタスクリストから明日締切のものだけをフィルタ出来るようになりました。
締切前日タスク一覧の作成
締切前日タスクの件数分、Teamsに通知が飛んでしまうと、あまりにも煩わしい & 圧が強いので、1つのメッセージで複数のタスクをまとめて通知できるように設定します。
-
変数を初期化するアクションを追加します。
-
変数の名前を入力し、Type を「Array」に設定します。
-
配列変数に追加アクションを追加します。
-
Name で先ほど作成したArray型の変数を指定し、Value に複数の項目の取得からタイトル列を指定します。
※自動的に For Each( Apply to Each )がかかります。
-
For each の外側に結合アクションを追加します。
-
From にアレイ型の変数、 Join with にHtmlの改行コードを入れます。
<br>
これで明日締切のタスク一覧が完成します。
明日締切のタスクがある時だけ通知する条件処理
毎日締切に追われている!!
私には土日も祝日もないんだ!!という方もいらっしゃるかもしれませんが、今回はホワイト企業らしい締切前日の時もあれば、そうじゃない時もある……という働き方を想定します。
ゆえに締切前日のタスクがある時はTeamsで通知、ないときは何もしないという条件式を書いていきます。
-
条件の左側に以下の式を書きます。
length(outputs('複数の項目の取得')?['body/value'])
-
真ん中のプルダウンで「is greater or equal to」を指定して、右側の値を1にします。
これで複数の項目の取得でのフィルタリング結果が1件以上あった時だけTeams への通知が行えるようになりました。