自動化
PR

Power Automate Desktopを定期実行する方法|タスクスケジューラで決まった時間に動かす手順と注意点

sanane
記事内に商品プロモーションを含む場合があります

Power Automate Desktop(PAD)のフローを毎朝9時に自動で動かしたいと思っても、無料のPADには「スケジュール」の設定がありません。この記事では、Windowsのタスク スケジューラとフローの「URLを実行」を使って、決まった時間にフローを起動する方法を、Windows 11で実際に試した結果とあわせて紹介します。

先にお伝えすると、そのままでは起動はできるものの、毎回「フローを実行」の確認画面が出て、[続行]を押すまで実行されませんでした。レジストリの値を1つ追加すると確認画面が出なくなり、誰も操作しなくても時間どおりに実行されたので、その方法と注意点もあわせて紹介します。

こんな人にオススメ
  • Power Automate Desktopのフローを毎日決まった時間に動かしたい
  • タスク スケジューラからフローを起動する方法を知りたい
  • タスクを登録したのに時間になってもフローが動かない
あわせて読みたい
Power Automateとは?できること・使い方・始め方を実例53本で解説
Power Automateとは?できること・使い方・始め方を実例53本で解説

先に結論|タスク スケジューラで起動し、確認画面はレジストリで消す

確かめたこと結果
無料のPADにスケジュール機能はあるかない(コンソール・デザイナー・設定のどこにもない)
フローの「URLを実行」を開くと動くか動く。ただし毎回「フローを実行」の確認画面が出る
タスク スケジューラから起動できるか起動できた。ただし確認画面で[続行]を押すまで実行されない(2分以上待っても進まなかった)
確認画面を消せるかレジストリに EnableAskBeforeRunningAFlowExternally=0 を追加すると確認画面なしで、無人で実行できた(設定画面には項目が出ない)
ノートパソコンでタスクが動かないタスクの既定の条件「AC電源で使用している場合のみ」が原因。バッテリー駆動だと開始されなかった

確認した環境:Windows 11 Home 26H2、Power Automate Desktop 11.2610.155.0(Microsoft Store版)、個人のMicrosoftアカウント(無料)。

無料のPower Automate Desktopにはスケジュール機能がない

PADのコンソール(フローの一覧)の︙メニューは「実行/停止/編集/名前の変更/削除/コピーを作成する/デスクトップ ショートカットを作成/プロパティ」で、時間を指定して動かす項目はありません。デザイナーや設定画面にも見当たりませんでした。

決まった時間に動かすには、Windowsのタスク スケジューラから、フローを起動するURLを開く方法を使います。Microsoftの公式ドキュメントにも、この方法が載っています。

クラウド版のPower Automate(有料のプレミアム)なら、スケジュールのクラウド フローからデスクトップ フローを呼び出すこともできます。クラウド版の定期実行は、記事の最後で紹介しています。

手順1:テスト用のフローを用意する

動いたかどうかを確かめやすいように、現在の日時をテキストファイルに1行ずつ書き足すだけのフローを作りました。

現在の日時を取得とテキストをファイルに書き込むの2つのアクションのフロー

アクションの一覧で探して置いてもよいですし、次の文字をコピーして、デザイナーのフローの部分にCtrl+Vで貼り付けると同じ2つのアクションができます(書き込み先のフォルダー C:\Users\Public\PADテスト は先に作っておきます)。

DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> CurrentDateTime
File.WriteText File: $'''C:\\Users\\Public\\PADテスト\\実行ログ.txt''' TextToWrite: CurrentDateTime AppendNewLine: True IfFileExists: File.IfFileExists.Append Encoding: File.FileEncoding.UTF8

保存したら、デザイナーの▶で一度実行して、実行ログ.txt に日時が書かれることを確かめておきます。

手順2:フローの「URLを実行」をコピーする

  1. PADのコンソールで、フローの︙ →「プロパティ」を開く
  2. 「詳細情報」タブの「URL を実行」の横のコピーのボタンを押す
フローのプロパティの詳細情報タブ。URLを実行に ms-powerautomate:/console/flow/run?environmentid=one-drive-environment-Id と表示

コピーされるURLは次の形でした。個人のMicrosoftアカウントでは、環境IDの部分が one-drive-environment-Id という決まった文字になっていました。

ms-powerautomate:/console/flow/run?environmentid=one-drive-environment-Id&workflowid=<フローID>&source=Other

手順3:URLを開いて動くか確かめる

コピーしたURLをエクスプローラーのアドレス欄やブラウザーに貼り付けて開くと、少し待ってから次の確認画面が出ました。

フローを実行。外部ソースが次のフローの実行を試みています: テスト_定期実行。このソースを信頼できる場合にのみ続行してください。続行とキャンセルのボタン

[続行]を押すと、ステータスが「ダウンロード中」になってから実行され、次の通知が出ました。

フロー テスト_定期実行 が正常に完了しました 実行時間 00:00:00 の通知

手順4:タスク スケジューラにタスクを登録する

タスク スケジューラ(スタートメニューで「タスク スケジューラ」と検索)で「基本タスクの作成」または「タスクの作成」を選び、トリガー(毎日 9:00 など)を決めたら、操作を次のように設定します。

タスク スケジューラの操作の編集。操作はプログラムの開始、プログラム/スクリプトに powershell.exe、引数の追加に -Command Start-Process
項目入力する内容(Microsoft Store版のPAD)
操作プログラムの開始
プログラム/スクリプトC:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe
引数の追加 (オプション)-Command "Start-Process \"(コピーしたURL)\""

引数は、URLの部分を自分のURLに置き換えて、次のように入れます。

-Command "Start-Process \"ms-powerautomate:/console/flow/run?environmentid=one-drive-environment-Id&workflowid=<フローID>&source=Other\""

PADをMicrosoft Storeからではなくインストーラー(MSI)で入れた場合は、プログラムに C:\Program Files (x86)\Power Automate Desktop\dotnet\PAD.Console.Host.exe、引数にURLをそのまま入れる方法が公式ドキュメントに載っています。

試したパソコンはStore版で、PAD.Console.Host.exe はありませんでした。cmd.exe の引数に /c start "" "(URL)" と入れる方法でも同じように起動できました。

ノートパソコンでタスクが動かないときは「条件」タブを確認

最初に登録したタスクは、時間になっても何も起きませんでした。タスク スケジューラの「前回の実行時刻」は 1999/11/30 0:00:00(一度も実行されていない)、「前回の実行結果」は 0x41303(まだ実行されていない)のままです。

原因は、タスクの「条件」タブにある「コンピューターを AC 電源で使用している場合のみタスクを開始する」でした。この項目は最初からオンになっていて、試したノートパソコンはバッテリーで動いていたため、タスクが開始されませんでした。

タスクのプロパティの条件タブ。既定ではコンピューターをAC電源で使用している場合のみタスクを開始するがオン、チェックを外すとバッテリーでも動く比較

チェックを外して次の時刻を待つと、タスクは時間どおりに実行されました(前回の実行結果 0x0)。バッテリーに切り替わったときに止めたくない場合は、下の「コンピューターの電源をバッテリに切り替える場合は停止する」も外しておきます。

注意:確認画面で止まり、無人では実行されない

タスクは時間どおりに動き、PADのコンソールが開きました。ところが、URLを手で開いたときと同じ「フローを実行」の確認画面が出て、そこで止まりました。

タスク スケジューラから起動したときもフローを実行の確認画面が出て、一覧のステータスは実行されていませんのまま

確認画面を出したまま2分以上待っても、フローは実行されず、実行ログ.txt に行は増えませんでした。[続行]を押すと、その時点で実行されました。つまりこのままでは、パソコンの前にいて[続行]を押せる時間にしか使えません。

確認画面を出さずに無人で実行する(レジストリ)

Microsoftの公式ドキュメントには、確認画面を出さないようにする方法として、次の2つが書かれています。

  • コンソールの設定で「フローを外部から呼び出すときに確認のダイアログを表示する」をオフにする
  • レジストリ HKEY_CURRENT_USER\SOFTWARE\Microsoft\Power Automate Desktop に、DWORD値 EnableAskBeforeRunningAFlowExternally を 0 で作る

試したパソコン(個人アカウント・Store版 11.2610)では、設定の「全般」タブに1つ目の項目はありませんでした(レジストリの値を作ったあとも出てきませんでした)。

PADの設定の全般タブ。アプリケーションの自動起動、外観、フロー実行コントロールの監視/通知と一時停止・停止のショートカットだけで、確認ダイアログの項目はない

そこで2つ目のレジストリを試しました。

公式ドキュメントには「確認ダイアログを無効化すると、悪意のあるアクターが共有した疑わしいフローを気付かずに実行する危険性があり、セキュリティ上の脅威が生じます」と書かれています。

確認画面がなくなると、URLやショートカットを開いただけで、どのフローもすぐ動きます。会社のパソコンなら必ず管理者に確認し、自分のパソコンでも自己責任で行ってください。

1. レジストリの値を追加する

スタートメニューで「PowerShell」と検索して開き(管理者でなくてかまいません)、次のコマンドを実行します。

New-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Power Automate Desktop" -Name EnableAskBeforeRunningAFlowExternally -PropertyType DWord -Value 0 -Force

レジストリ エディターで追加する場合は、HKEY_CURRENT_USER\SOFTWARE\Microsoft\Power Automate Desktop を開き、[編集]→[新規]→[DWORD (32 ビット) 値]で名前を EnableAskBeforeRunningAFlowExternally、値を 0 にします。

2. 結果:確認画面なしで、時間どおりに実行された

値を追加してからURLを開くと、確認画面は出ずに、そのままフローが実行されました(PADは起動し直さずに試しました)。

続けて、タスク スケジューラに2分後のタスクを登録してパソコンに触らずに待つと、時刻どおりにフローが実行され、実行ログ.txt に行が増えて、完了の通知が出ました。

確認画面なしでタスク スケジューラから実行され、フロー テスト_定期実行 が正常に完了しましたの通知が出た

3. 元に戻すときは値を消してからPADを起動し直す

確認画面を元に戻すときは、次のコマンドで値を消します。

Remove-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Power Automate Desktop" -Name EnableAskBeforeRunningAFlowExternally

試したところ、値を消した直後は、まだ確認画面なしで実行されました。

Power Automateを完全に終了してから起動し直すと、確認画面が出るようになりました。設定の「ウィンドウを閉じてもアプリケーションを実行し続ける」が既定でオンなので、×で閉じただけでは終了しません。試したときは、Power Automateのプロセス(PAD.Console.Host など)をすべて終了してから起動し直しました。

「ユーザーがログオンしているときのみ実行する」のままにする

PADのフローは、画面に表示されたコンソールの中で動きます。タスクの「全般」タブの「ユーザーがログオンしているときのみ実行する」(既定)のままにしておきます。

タスクのプロパティの全般タブのセキュリティ オプション。ユーザーがログオンしているときのみ実行するが選択されている

パソコンがスリープしていると動かないので、スリープ中に動かしたい場合は「条件」タブの「タスクを実行するためにスリープを解除する」も確認してください(スリープ解除の設定は、記事の最後で紹介しています)。

よくある質問

Q
Power Automate Desktopだけでスケジュール実行できますか?

無料のPower Automate Desktopには、スケジュールを設定する機能はありませんでした。Windowsのタスク スケジューラからフローのURLを開く方法を使います。

Q
タスク スケジューラに登録したのに動きません。

ノートパソコンなら、タスクの「条件」タブの「コンピューターを AC 電源で使用している場合のみタスクを開始する」を確認してください。最初からオンになっていて、バッテリー駆動だと開始されませんでした。

Q
「フローを実行」の確認画面を出さない方法はありますか?

レジストリの HKEY_CURRENT_USER\SOFTWARE\Microsoft\Power Automate Desktop に DWORD値 EnableAskBeforeRunningAFlowExternally を 0 で追加すると、確認画面なしで実行されました。セキュリティ上の危険があると公式ドキュメントに書かれているので、自己責任で行ってください。

Q
レジストリの値を消したのに確認画面が出ません。

試したところ、値を消してもPower Automateを完全に終了して起動し直すまで反映されませんでした。

Q
フローがすでに実行中のときにタスクが動いたらどうなりますか?

公式ドキュメントでは、フローがすでに実行されている場合、URLを呼び出してもフローは再度実行されないと説明されています。

まとめ

  • 無料のPower Automate Desktopにはスケジュール機能がない
  • フローのプロパティの「URL を実行」を、タスク スケジューラから開くと起動できる
  • ノートパソコンは「AC 電源で使用している場合のみ」のチェックを外さないと、バッテリー駆動のとき動かない
  • そのままでは起動のたびに「フローを実行」の確認画面が出て、[続行]を押すまで実行されなかった
  • レジストリに EnableAskBeforeRunningAFlowExternally=0 を追加すると、確認画面なしで無人で実行できた(セキュリティの注意あり・戻すときはPADを起動し直す)

クラウド版のPower Automateで、営業日だけ動かす定期実行の作り方はこちらです。

あわせて読みたい
Power Automate 定期実行(スケジュール)完全ガイド|営業日だけ動かす(土日・祝日除外)
Power Automate 定期実行(スケジュール)完全ガイド|営業日だけ動かす(土日・祝日除外)

タスク スケジューラでスリープ中のパソコンを起こして実行する設定は、こちらで紹介しています。

あわせて読みたい
「スリープ解除タイマーの許可」表示されないときの解決方法!タスクスケジューラをスリープ状態で実行するときの手順を紹介
「スリープ解除タイマーの許可」表示されないときの解決方法!タスクスケジューラをスリープ状態で実行するときの手順を紹介
記事URLをコピーしました