スケジューリング
無料版の Power Automate Desktop には、スケジュール実行機能がありません。 そのため、特定の日時にフローを自動で開始することはできません。
その代わりとして、フローを無限ループさせながら現在時刻を取得し、特定の時刻になった場合のみ処理を分岐させるフローであれば作成可能です。
今回はその方法を解説します。
無限ループ(繰り返し処理)を実装する無料版ではスケジュール実行を行うことができません。そのため、フローを終了させず持続的に実行させ続けることで、特定のアクションを監視するような実装をされることも多いかと思います。無限ループを実装する方法を紹介します
コピーアンドペーストで実装
Section titled “コピーアンドペーストで実装”今回はサンプルとして、ループを継続させながら、朝の 8 時 00 分にだけ動作するフローを作成しました。
以下のコードをコピーし、Power Automate Desktop の編集画面に貼り付けることで、対象のアクションが追加されます。
LOOP FROM 0 TO 1 STEP 0 DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> CurrentDateTime Text.ConvertDateTimeToText.FromCustomDateTime DateTime: CurrentDateTime CustomFormat: $'''HH''' Result=> CurrentHour Text.ConvertDateTimeToText.FromCustomDateTime DateTime: CurrentDateTime CustomFormat: $'''mm''' Result=> CurrentMinute IF (CurrentHour = '08' AND CurrentMinute = '00') = True THEN Display.ShowMessageDialog.ShowMessage Title: $'''指定の時間になりました。''' Message: $'''朝の8時です!''' Icon: Display.Icon.Information Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False END WAIT 60ENDIF 文内に複数の条件を格納しています。この方法の詳細については、以下のページをご参照ください。
条件分岐に複数の条件を設定するtrueかfalseを返すBoolean型を使用して、1つのIf文に複数の条件を設定する方法を解説します。
注意すべきポイント
Section titled “注意すべきポイント”重複実行に注意
Section titled “重複実行に注意”今回のサンプルでは 1 分ごとにループが実行され、8 時 00 分の場合のみ動作するようになっています。
ただ、この条件が 8 時台であるかどうかだけであれば、IF 文内のアクションは約 60 回実行されることになります。
実行済みかどうかの変数を定義して、1 度実行したら変数に値をセットするなど、重複して実行しないよう工夫が必要です。
実行漏れに注意
Section titled “実行漏れに注意”「WAIT 60」は 60 秒待機するだけなので、ループ内のアクションの処理時間の分だけ、1 周の間隔は 60 秒より少し長くなります。そのため、まれに 8 時 00 分の 1 分間に 1 度も判定が行われず、処理が実行されないことがあります。確実に実行したい場合は、待機時間を短くしたうえで前述の実行済みフラグと組み合わせるなどの工夫をしてください。