スケジューリング
Power Automate Desktop には、スケジュール実行機能が存在しません。そのため、特定の日時にフローが実行されるような機能を実装することはできません。
その代わりとして、フローを無限ループさせながら現在時刻を取得し、特定の時刻になった場合のみ処理を分岐させるフローであれば作成可能です。
今回はその方法を解説します。
📄️ 無限ループ
無料版ではスケジュール実行を行うことができません。そのため、フローを終了させず持続的に実行させ続けることで、特定のアクションを監視するような実装をされることも多いかと思います。無限ループを実装する方法を紹介します
コピーアンドペーストで実装
今回はサンプルとして、ループを継続させながら、朝の 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 60
END
IF 文内に複数の条件を格納しています。この方法の詳細については、以下のページをご参照ください。
📄️ 複数条件の条件分岐
trueかfalseを返すBoolean型を使用して、1つのIf文に複数の条件を設定する方法を解説します。
注意すべきポイント
重複実行に注意
今回のサンプルでは 1 分毎にループが実行され、ピッタリ 8 時 00 分の場合のみ動作するようになっています。
ただ、この条件が 8 時であるかどうかだけであれば、IF 文内のアクションは約 60 回実行されることになります。
実行済みかどうかの変数を定義して、1 度実行したら変数に値をセットするなど、重複して実行しないよう工夫が必要です。