この記事では、Power Automateで平日(月曜日から金曜日)のみをカウントしてn日前の日付を取得する方法を説明します。
ExcelのWORKDAY関数のような計算をやります。
祝日カウントを行うと煩雑になるので、土日のみを除外してカウントする方法を紹介します。
概要
カウント例
今日が12/18の場合、単純に7日前を計算すると12/11となりますが、平日のみカウントして7日前を計算すると12/9となります。
他にも10日前をカウントすると平日のみカウントの場合は12/4となります。
この計算を行う数式
平日のみのカウントは、通常のカウント(n)に週の数分の土日を追加することで総日数を算出でき、今日から総日数を引くことで計算できます。
実装方法
フローの作成・トリガーの設定
- Power Automateで新しい「インスタント フロー」を作成します
- トリガーとして「フローを手動でトリガーする」を選択します
- 入力として「n」(n日前)を受け取るように設定します
総日数を計算
「作成」アクションを追加し、以下の数式を設定します。
add(
triggerBody()?['number'],
mul(
div(
add(
add(triggerBody()?['text'], 5),
mul(dayOfWeek(utcNow()), -1)
),
5
),
2
)
)
この式の各部分の説明:
triggerBody()?['text']
: 入力された平日数dayOfWeek(utcNow())
: 現在の曜日(0=日曜, 1=月曜, …, 6=土曜)add
,mul
,div
: それぞれ加算、乗算、除算を行う関数
日付計算の実装
formatDateTime(
addDays(
utcNow(),
mul(
-1,
outputs('作成')
)
),
'yyyy-MM-dd'
)
実行結果
nに7を入力して実行すると、9日前、12/9が出力されました。
同様に10日前を実行すると、9日前、12/9が出力されました。
コメント