はじめにPowerAutomate(クラウドフロー)では営業日判定を実現するようなアクションが
提供されていません(2024.05.28時点)。そのため、営業日計算を自前で実装する必要が
あり、備忘として記事にしました。
本記事では、5月の7営業日「5/13」を算出します。
また「イベントの取得(V4)」はフィルタークエリーと並べ替え順で正しく取得できるか
どうかを検証しましたが、一部の祝日が正しく取得できない為、「イベントのカレンダー
ビューの取得(V3)」を使用する事としました。
構築手順
手順1:手順2の営業日判定で利用する変数を定義します。
⓪トリガー (※今回は検証のため手動でフローをトリガーするを利用しています)
①実施年月を設定します。操作日の月初日を初期値とします。
②日付(X営業日)カウンタを定義します。
③営業日カウンタを定義します。
④日付(X営業日)の月日を変数定義します。
⑤日付(X営業日)の曜日を変数定義します。
上記の変数定義ですが、後述の繰り返しの中で X=X++をしても足し算が繰り返されない為
X=X+Y ※Yの方をインクリメントする考え方になります。
手順2:日付の先頭から営業日判定(土日祝でない)を行います。
営業日カウンタが目的の営業日になるまで繰り返します。
⑦ 「④日付(X営業日)の月日」に「①操作日の月初日」+「②日付(X営業日)」を設定します。
formatDateTime(addDays(body('実施年月を取得し月初日を設定する'),variables('カウンタ')),'M/d')
⑧ 「⑤日付(X営業日)の曜日」も⑦と同じように設定します。
formatDateTime(addDays(body('実施年月を取得し月初日を設定する'),variables('カウンタ')),'ddd','ja-JP')
⑨ 「④日付(X営業日)の月日」を利用して祝日判定を行います。
※「イベントのカレンダービューの取得(V3)」で開始時刻と終了時刻に④を設定
⑩ 土日祝日の判定を行います。
下記のいずれかを満たせば、土日祝日と判定
・「⑤日付(X営業日)の曜日」が土である
・「⑤日付(X営業日)の曜日」が日である
・「⑨祝日判定」で戻り値が空 ※祝日の場合、jsonが返却されます
length(body('祝日の判定').value)
⑪ ⑩で土日祝日でないと判断した場合に、「③営業日カウンタ」を増やします。
手順3:
⑫手順2の結果を出力します。
以上です。ご精読いただき、ありがとうございました。