Microsoft 365

Power Automate フローを「年末年始に実行させない」方法

以前、フローで祝日を判定させ「営業日のみ」実行させましたが、判定があくまで Outlook の「祝日」ベースのため、年末年始にはフローが実行され通知が送信されてしまいました。そこで判定を追加し「年末年始に(も)実行しない」ようにしてみます。

フローを実行しない期間を追加する

スケジュール済みクラウドフローが既にある前提です。フローの[…]から、メニューを「設定」を呼び出します。 トリガーの条件として、下記を指定してください。

@and(greaterOrEquals(convertFromUtc(utcNow(),'Tokyo Standard Time','MM-dd'),'01-03'),lessOrEquals(convertFromUtc(utcNow(),'Tokyo Standard Time','MM-dd'),'12-29'))
f9de77ed944c5ee4a07ee9904238f3d8

greaterOrEquals は、1つ目の値が2つ目の値より大きければ True、小さければ False と判定する関数です。
lessOrEquals は、1つ目の値が2番目の値以下かを判定する関数です。
このサンプルでは、実行日が「日本時間の1月3日より大きい場合」と「12月29日より小さい場合」という指定となり、これにより 12月29日~1月3日の期間はフローが実行されません。

応用と留意点

年末年始以外でも、お盆やGWなどの長期休暇にも使えると思います。ただ、その場合、条件式の組み方が少し大変そうです。またそれらの休暇は日程が完全固定ではないため、年度ごとに修正も必要になると思います。

メンテナンス性まで考えると、その場合は「トリガーの条件」を利用するようにも明示的にフローの冒頭に判定ロジックを組み込むことで「起動はするが長期休暇期間なので通知を送信せずにそのまま終了する」くらいにしておいたほうが良いかもしれませんね。