コンテンツにスキップ

スケジューリング

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

「WAIT 60」は 60 秒待機するだけなので、ループ内のアクションの処理時間の分だけ、1 周の間隔は 60 秒より少し長くなります。そのため、まれに 8 時 00 分の 1 分間に 1 度も判定が行われず、処理が実行されないことがあります。確実に実行したい場合は、待機時間を短くしたうえで前述の実行済みフラグと組み合わせるなどの工夫をしてください。