メインコンテンツまでスキップ

スケジューリング

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 度実行したら変数に値をセットするなど、重複して実行しないよう工夫が必要です。