はじめに
Power Apps でアプリを作成した際、例えば、以下のような、リマインドメールやチャットを送りたいというニーズがあります。今回はその方法について説明します。
- お問い合わせを管理するアプリを Power Apps で作成し、解決希望の期限に近づいているものの、完了ステータスになっていない案件について、担当者にリマインドメールやチャットを送りたい
- 予約を管理するアプリを Power Apps で作成し、予約日が近くなった際に予約者にリマインダドメールやチャットを送りたい
データソース側の準備
今回は、SharePoint リストを利用します。
お問い合わせを管理する Power Apps のデータソースとして捉えていただけたらと思います。
以下のような感じの列を作成しておきます。
Power Automate 側の実装
Power Automate 側を実装していきます。
まず、全体像は以下のような感じです。
まず、トリガーはスケジュールにしておきます。
頻度は好きに設定ください。一旦、1 日 1 回にしておきます。
今回は、以下の条件に合致するものにだけリマインダーを送りたいと思います。
- 解決希望日の一週間前に迫っている
- ステータスが完了ではない
- リマインダーを送っていない
まず、トリガーを動かした際の 1 週間後の日付を取得します。
addDays(body('タイム_ゾーンの変換'),7)
そして、要件を満たす行を SharePoint リストから取得します。この際、フィルターをするのがポイントです。これにより、条件に合致したデータだけ取得して通知をすることが可能になります。
今回のケースにおける、構文は以下のような感じです。
解決希望日が本日から 1 週間後の間で、ステータスが完了ではなく、リマインダーを送ったというフラグが立っていないものを抽出しています。
(OData__x7d0d__x671f_ gt '@{body('タイム_ゾーンの変換')}') and (OData__x7d0d__x671f_ le '@{variables('DaysOf1WeekAfter')}') and (OData__x30b9__x30c6__x30fc__x30bf__x30 ne '完了') and (OData__x30ea__x30de__x30a4__x30f3__x30 eq 'false')
執筆時点では、上記のように書いておりましたが、以下のような条件式でもよいかと思います。日付の比較以外の条件は上記のように別途用意しておいた方が良いと思います。
Deadline lt '@{addDays(utcNow(), 7)}'
Deadline ge '@{utcNow()}' and Deadline lt '@{addDays(utcNow(), 7)}'
※フローが動く日以前の場合は動かないようにしたい場合
日本語で列名を作成したため、上記のように、列名が分かりにくくなっています。そのため、列名を日本語にしたい場合は、SharePoint リストを使う際は、一旦、列名を英語で作成し、その後日本語に変更することをおすすめします。
なお、日本語で作成してしまった場合は、リストの設定から確認して、
"OData_" と連結しています。
もしくは、すべての種類の列は出てきませんが、実験的な機能をオンにして、可能な限りこちらの GUI ベースでフィルターするという方法もあります。簡単な条件の場合はこちらを使用した方が分かりやすいと思います。
※上記を押すと、以下のように変換されるため、必要に応じて追加の条件を手入力します。
動作させてみました。
今回は、1 件ヒットしたようです。一旦通知だけにしていますが、リンクつけるなり、アダプティブカードにするなりして、クリックしてもアプリや SharePoint リストに飛ぶようにしてもいいかもですね。
こちらの件がヒットし、リマインドを送ったため、"リマインド済み" が "はい" になりました。
もう 1 回動かすと、該当する案件がないので (上記で該当する案件にフラグがたったので) リマインダーは送られなかったようです。