Power Automateで平日のみ実行するフローを作成(dayOfWeekの使い方)

PowerAutomateで平日の決まった時間に1日1回実行するフローを作りたくなりました。Teamsに決まった時間に投稿したいな、と思ったのがきっかけです。

ただ、PowerAutomateの繰り返し実行の設定は、あまり細かい設定には向いておらず、平日(月曜~金曜)のみ実行する、といった処理を作るためには一工夫必要でした。

方法はいろいろあるのかもしれないが、私がうまくいったのは日付から曜日を戻り値として取得するdayOfWeek関数と、その値を判定するequals関数とor関数の組み合わせ

(2020/7/12追記)
単純に曜日を指定するだけであれば、dayOfWeek関数を使わないもっと簡単な方法があったので、別記事に書いてみました

dayOfWeek関数の使い方

dayOfWeek関数は、dayOfWeek(”)という記述になり、特定の日付の曜日が欲しいのであれば、シングルコーテーションの中に対象の日付を(相変わらずUTCで)記載。

dayOfWeek(‘2018-03-15T13:27:36Z’)

現在時刻の関数を使うのであれば、シングルコーテーションは不要で、関数を記載する。

dayOfWeek(utcNow())

もちろん日本時間の曜日が欲しいので、dayOfWeek(getFutureTime(9, ‘Hour’))に。特に日時処理は深夜や朝一に動かすことが多いため、8:59までに実行するものはUTCとは曜日が異なることから、utcNowを使うと想定通りの結果とならない。これは、以下の記事を参考にしてもらえると良いかな、と思います。

Power Automateで日付を扱う処理(utcNowとgetFutureTimeとaddToTime)
PowerAutomateで関数を使って日付を取得してあれこれするにあたり、とりあえず使ってみた関数が utcNow() だったが、結果が想像と違ったため、色々と他の関数を試してみたので結果を遺してみます。単純にutcNo...

そして、dayOfWeek関数の戻り値は「日曜日」とか「SUNDAY」などといったご丁寧なものではなく、数字。日曜日が0で、月曜日が1~土曜日が6という7種類の数字。これが、月曜日始まりで土曜日が5、日曜日が6なら4以下(lessOrEquals関数)でいけるが、0と6の場合は実行したくない、1から5なら実行したいという作りにしないといけない。

というわけで0か6だったらtrueを返すというequals関数と2つの結果を見てtrueかfalseを返すor関数の組み合わせにしてみました。

or(equals(dayOfWeek(getFutureTime(9, ‘Hour’)), 0), equals(dayOfWeek(getFutureTime(9, ‘Hour’)), 6))

中身を簡単にわけて説明すると、

equals(dayOfWeek(getFutureTime(9, ‘Hour’)), 0) ・・・これが日曜日かどうかの判定equals(dayOfWeek(getFutureTime(9, ‘Hour’)), 6) ・・・これが土曜日かどうかの判定

日曜日か土曜日であれば、どちらかの結果がtrueになる。この2つの結果をみて、少なくとも1つの式がtrueの場合はtrueを返し、どちらの式もfalseの場合はfalseを返すor関数で判定する。

or(日曜日判定,土曜日判定)

このor関数の結果が、以下のようになる。

日曜日の場合・・・or(true,false)→true
月~金の場合・・・or(false,false)→false
土曜日の場合・・・or(false,true)→true

あとは、PowerAutomateの条件アクションでこの関数の結果が、false に等しい場合、という設定にして、分岐後の「はいの場合」に平日に行いたい処理を、「いいえの場合」に土日に行いたい処理(場合によっては処理なし)を設定するという作りにすることで、平日のみ実行するフローの作成ができるようになります。


平日のみ実行したいアクションというのは色々あると思います。バッチ処理的な何かとか。もちろん祝日に対応できていないという点はありますが、月~金だけ実行できるだけでも結構使い勝手良かったりします。同じ考え方を使うと、月曜と火曜日だけなど特定の曜日だけというのも出来ます。是非使ってみてください。

コメント

  1. […] Power Automateで平日のみ実行するフローを作る方法として、以前、dayOfWeek関数を使う方法をエントリしたが、久しぶりに見てみるとデフォルトで用意されている「繰り返し」のトリガーでもっと簡単に実装できることに気が付いた。いつから出来るようになったのだろうか?しかしこれだと、平日だけでなく、指定曜日だけ実行できるので、むしろこの方法が正しい。 […]

  2. 匿名 より:

    平日/休日判定のやりかたがわからなくて困ってたので助かりました。ありがとうございます。
    判定のところは、『6で割った時のあまりが0』という条件にするとよりすっきり出来ると思います。

    • inaba Noshi より:

      お役に立ててよかったです!コメントありがとうございます!
      確かに、6で割る方がシンプルですね、そっちに変えようかな。。。ありがとうございます。

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