2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Microsoft Power AutomateAdvent Calendar 2024

Day 21

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

Posted at

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

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

※ この記事は、Microsoft Power Automate Advent Calendar 2024 12月21日 担当分の記事です。

概要

カウント例

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

image.png

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

この計算を行う数式

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

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

実装方法

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

  1. Power Automateで新しい「インスタント フロー」を作成します
  2. トリガーとして「フローを手動でトリガーする」を選択します
  3. 入力として「n」(n日前)を受け取るように設定します

image.png

総日数を計算

「作成」アクションを追加し、以下の数式を設定します。

image.png

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: それぞれ加算、乗算、除算を行う関数

日付計算の実装

image.png

formatDateTime(
    addDays(
        utcNow(), 
        mul(
            -1, 
            outputs('作成')
        )
    ), 
    'yyyy-MM-dd'
)

実行結果

nに7を入力して実行すると、9日前、12/9が出力されました。

image.png

同様に10日前を実行すると、9日前、12/9が出力されました。

image.png

関連記事

元記事

2
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?