Power Automate
Microsoft Formsなどのトリガーから、SharePointへの転記や通知などのアクションを自動化するMicrosoftのクラウドフローサービス。Formsコネクタにはトリガー「新しい応答が送信されるとき」とアクション「応答の詳細を取得」がある。
クラウドフロー
Recurrenceトリガー
頻度と間隔を指定して、クラウドフローやLogic Appsのワークフローを定期的に起動させるトリガー。
繰り返しトリガー
営業日判定
祝日マスタや会社休業日リストと今日の日付を照合し、実行日が営業日かどうかをフローの冒頭で判定する処理。
営業日ガード
既定タイムゾーンUTCの罠
Power Automateの開始時刻やutcNow()が既定でUTCとして扱われるため、タイムゾーンを明示しないと日本時間で意図した時刻・日付とずれてしまう問題。
UTC既定の罠
convertTimeZone式
UTCの日時を指定したタイムゾーンのローカル日時に変換するPower Automate/Logic Appsの式関数。
タイムゾーンの変換
月末・締め日の日付計算
今日の日付から月末日付や締め日までの残り日数を式で導出する、Power Automate/Logic Apps共通の日付計算パターン。
月末判定
残り営業日数の計算
祝日マスタ
祝日の日付と名称をデータとして保持し、フローの営業日判定に使う一覧。
祝日リスト
祝日テーブル
Terminateアクション
フロー実行全体を指定した状態(Failed等)で即座に終了させるPower Automateのアクション。
SharePointリスト
列・ビューによる状態管理ができる、SharePoint上のリスト形式のデータストア。
定期実行フローの運用リスク
失敗継続14日や90日間未トリガーによる自動オフ、既定28日の実行履歴保持、所有者退職による接続断など、定期実行フローが誰にも気づかれないまま止まりうる運用上のリスク。
止まったことに気づけない問題
督促・リマインドのまとめ配信設計
期限超過などの通知を1件ずつ送らず、担当者ごとにデータ操作アクションで1通へまとめて送る設計。
担当者別1通化
スケジュール実行のクラウドフローは、Recurrence(繰り返し)トリガーで頻度と間隔を設定して作る
タイムゾーン欄を指定しない場合、開始時刻は末尾にZを付けたUTCとして解釈され、日本時間で意図した時刻とずれる
utcNow()やトリガーの時刻をconvertTimeZoneで日本のタイムゾーン(Tokyo Standard Time)へ変換してから使うことで、UTCとのずれによる誤動作を防ぐ
フロー内の日付計算は、utcNow()が返すUTCの現在時刻をconvertTimeZoneで日本時間に変換した値を使い回す
月末や締め日の判定は、まずconvertTimeZoneで作った日本時間の「今日」を前提に式を組み立てる
営業日判定は、祝日マスタに今日の日付が含まれるかどうかの検索を前提とする
月末が休日なら前営業日に前倒しする判定を行う場合は、月末日付や残り営業日数を求める日付計算を前提とする(単に「今日が祝日マスタにあるか」だけを見る営業日判定では不要)
営業日でないと判定された場合は、Terminateアクションで実行をキャンセル済みとして終了する
営業日判定は、convertTimeZoneで作った日本時間の「今日」を祝日マスタと突き合わせることから始まる
祝日マスタは、日付列と名称列を持つSharePointリストとして持つのが手軽である
Power Automateのフローは、祝日マスタに基づく営業日判定とTerminateによる打ち切りをフロー冒頭の分岐として自動化できる
定期実行フローは、トリガー・アクションの失敗が続く場合や90日間一度もトリガーされない場合に自動的にオフになることがある
本記事が組み立てる督促フローでは、期限超過の督促をSelectやFilter arrayなどのデータ操作アクションで担当者ごとに1通へまとめて送る
台帳がExcelなど他形式で管理されている場合はSharePointリストへの置き換えが前提になり、督促の抽出は期限・状態・担当者の列を持つSharePointリストの台帳がデータとして取れることを前提とする
フローの構成では、営業日判定を先に行い、営業日でなければTerminateし、営業日のときだけ督促の抽出・通知に進む
実行日時・処理件数・結果をログ用のSharePointリストへ記録しておくと、既定28日の実行履歴保持と無関係に過去の実行を確認できる
頻度が「月」の場合には毎月末や締め日が休日なら前営業日のような変動する日付を直接指定する欄がなく、この判定にRecurrenceトリガーの月次日付指定を使うのは向かない
祝日マスタや督促対象の台帳など、判定・抽出に使うデータをSharePointリストとして持つ構成を前提にする