Power AutomatePower Automate for cloudすぐ使えるシリーズ活用事例集(クラウド)

【Power Automate】平日のみカウントしたn日前を取得する方法

Power Automate

この記事では、Power Automateで平日(月曜日から金曜日)のみをカウントしてn日前の日付を取得する方法を説明します。
ExcelのWORKDAY関数のような計算をやります。

祝日カウントを行うと煩雑になるので、土日のみを除外してカウントする方法を紹介します。

概要

カウント例

今日が12/18の場合、単純に7日前を計算すると12/11となりますが、平日のみカウントして7日前を計算すると12/9となります。

他にも10日前をカウントすると平日のみカウントの場合は12/4となります。

この計算を行う数式

n:日数
m:今日の曜日インデックス(dayOfWeek関数の出力:日=0, 月=1, 火=2, 水=3, 木=4, 金=5, 土=6)

平日のみのカウントは、通常のカウント(n)に週の数分の土日を追加することで総日数を算出でき、今日から総日数を引くことで計算できます。

実装方法

フローの作成・トリガーの設定

  1. Power Automateで新しい「インスタント フロー」を作成します
  2. トリガーとして「フローを手動でトリガーする」を選択します
  3. 入力として「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が出力されました。

関連記事

コメント

タイトルとURLをコピーしました