MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

もう怖くない!Power Automateのスケジュール実行設定方法

[2022/04/15 仕様変更箇所について記載変更]

スケジュール実行とは?

Power Automateでは、フローを開始するトリガーに「スケジュール」というものがあります。これを利用すると決まった間隔・タイミングで何らかの処理を自動実行させることができます。 今回はこの「スケジュール」トリガーの、パターン別の設定方法をご紹介します。

念のため補足:どこから作るか

Power Automateでフローの作成をするときにも、「予定フローを作成」という名前で表示されています。(下図) でも、日本語で利用しているのであれば、あまりここから行くのはお勧めしません。。(日本語訳があれなので)

f:id:mofumofu_dance:20200404225807p:plain

ということでスキップしていただき、空でフローを作成し始めます。そこからも、「スケジュール」で検索すればすぐに見つけられますし、こちらのほうが日本語でもわかりやすいです。

f:id:mofumofu_dance:20200404230313p:plain

スケジュールトリガーのパターン

思いつく限り、単純な繰り返しでは以下のようなパターンが使われるかなと思います。

  1. 毎月決まった日
  2. 毎週決まった曜日
  3. 隔週で決まった曜日
  4. 月の第2週・第4週の決まった曜日
  5. 毎日決まった時間
  6. 毎時

この中で厄介なのは4くらいです。あとは設定どおりではあるので、見ていきましょう。

1.毎月決まった日

例えば25日とか、そういう処理の締め日みたいな日に実行したいフローがある場合に有効です。 この場合には、間隔頻度 をそれぞれ、1 ヵ月 に設定します。

これだけだと、フロー実行した日から適当に繰り返されるので、[詳細オプション] から、タイムゾーンと開始時刻を設定します。

開始時刻の書式は yyyy-mm-ddThh:mm:ssZ です。結構覚えにくいですよね。。 例:2020年4月15日 16:30から1か月間隔なら、2020-04-15T16:30:00Z です。

注意事項(05/02補足)

例えば月の最終日に発動させたい場合には、03-31のように、31日がある月を指定してあげると毎月末に実行されます。

逆に言えば“30日”が重要な場合には、狙った日付以外で発動する月があるので注意してください。(2月)

f:id:mofumofu_dance:20200417164920p:plain

2.毎週決まった曜日

例えば平日(月曜~金曜)で祝日の考慮が不要な場合とかです。 この場合には、間隔頻度 をそれぞれ、1 週 に設定します。

やはり詳細オプションを表示して、タイムゾーンと、設定曜日、設定時刻を選択します。 下図の例では、月曜から金曜の13時にスケジュール実行されます。

f:id:mofumofu_dance:20200417165350p:plain

3.隔週で決まった曜日

これは「毎週」の設定で、間隔を2にすれば解決です。ただし、本当に隔週でいいなら。

4.月の第2週・第4週の決まった曜日

さて、ここが一番厄介です。第2週と第4週の決まった曜日です。ここでは、第2月曜日 ではなく、月の2週目の月曜日 のようなパターンを考えます。

これは単純な設定では実現できないので、Trigger Conditionsを利用します。 (詳しくは→ Power Automateの裏側をみてみよう! (2/2) - MoreBeerMorePower )

間隔頻度 を 1 週、設定曜日を指定して、trigger conditionに以下の式を設定します。

@equals(
    div(dayOfYear(convertFromUtc(utcNow(),'Tokyo Standard Time','yyyy-MM-dd')),7),
    add(div(dayOfYear(concat(substring(convertFromUtc(triggerOutputs()?['headers']?['x-ms-user-timestamp'],'Tokyo Standard Time','yyyy-MM-dd'),0,8),'01')),7),0)
)

実際にはつなげてください。 式の最後の、7),0)ですが、この 0 を、1週目-->0、 2週目-->1 という具合に、実行したい週の番号に置き換えることで、トリガーの発動するタイミングが制御されます。 f:id:mofumofu_dance:20200417171244p:plain

Note : 2022/04/15
triggerOutputs()?['headers']?['x-ms-user-timestamp']がスケジュール実行トリガーで取得できなくなっていましたので、該当箇所をutcNow()で置き換えています。

5.毎日決まった時間

これは「毎週」の曜日設定が抜けたようなパターンです。 間隔頻度 を 1 日 として、設定時刻を指定します。 下図の場合には、プレビューにも出ているとおり、毎日 8:20と17:20に実行されます。 f:id:mofumofu_dance:20200417170051p:plain

6.毎時

毎時間休憩時間だよアラームみたいな用途で使えるかもしれません。 毎時繰り返し処理する場合には、間隔頻度 を 1 時間 とします。この際、開始時刻を設定することで、指定した分 (minutes)に実行されます。

f:id:mofumofu_dance:20200417170158p:plain

おわり

よく使うスケジュール実行ですが、ちょっとなれないと、なかなかうまく制御できないということがあるかなと思います。 全体的な注意事項としては、タイムゾーンの設定を忘れないことでしょうか。

あとは毎回yyyy-MM-ddThh:mm:ssZのタイムスタンプの記法を忘れてしまうので、Windowsの付箋にでも書いておくと便利です! f:id:mofumofu_dance:20200417174345p:plain