スケジューリング
*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 文内に複数の条件を格納しています。この方法の詳細については、以下のページをご参照ください。
注意すべきポイント
重複実行に注意
今回のサンプルでは 1 分毎にループが実行され、ピッタリ 8 時 00 分の場合のみ動作するようになっています。
ただ、この条件が 8 時であるかどうかだけであれば、IF 文内のアクションは約 60 回実行されることになります。
実行済みかどうかの変数を定義して、1 度実行したら変数に値をセットするなど、重複して実行しないよう工夫が必要です。