2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Power Automate(クラウドフロー)で月初7営業日の計算を行う

Last updated at Posted at 2024-05-27

はじめにPowerAutomate(クラウドフロー)では営業日判定を実現するようなアクションが
提供されていません(2024.05.28時点)。そのため、営業日計算を自前で実装する必要が
あり、備忘として記事にしました。:eyes:

本記事では、5月の7営業日「5/13」を算出します。

また「イベントの取得(V4)」はフィルタークエリーと並べ替え順で正しく取得できるか
どうかを検証しましたが、一部の祝日が正しく取得できない為、「イベントのカレンダー
ビューの取得(V3)」を使用する事としました。

構築手順

全体のフロー図は御覧の通りです。
 
営業日判定1.png

 
手順1:手順2の営業日判定で利用する変数を定義します。

営業日判定2.png
 ⓪トリガー (※今回は検証のため手動でフローをトリガーするを利用しています)
 ①実施年月を設定します。操作日の月初日を初期値とします。
 ②日付(X営業日)カウンタを定義します。
 ③営業日カウンタを定義します。
 ④日付(X営業日)の月日を変数定義します。
 ⑤日付(X営業日)の曜日を変数定義します。

 上記の変数定義ですが、後述の繰り返しの中で X=X++をしても足し算が繰り返されない為
 X=X+Y ※Yの方をインクリメントする考え方になります。

手順2:日付の先頭から営業日判定(土日祝でない)を行います。
 営業日カウンタが目的の営業日になるまで繰り返します。

 営業日判定3.png
 ⑥繰り返しの終了条件を設定します。

 ⑦ 「④日付(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の結果を出力します。

テスト実施ですが、実行ログを参照しても良いですが、分かりやすいので投稿を利用しています。

営業日判定4.png

営業日判定5.png

以上です。ご精読いただき、ありがとうございました。


 
 
 

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?