無償のPower Automate DesktopでWeb情報収集の自動化を試みた筆者であるが、本当の意味での自動化はタスクスケジュールやバッチにより定期的な時間設定である。
これが無償版のPower Automate Desktopではなかなかハードルが高い。というのもスケジューラで設定する機能は、プレミアム版とは異なりデフォルトでは備えてないようだ。検索やAIで調べてみてもピンポイントでは出てこない。PowerShell Automation関連のライブラリを使って実行している猛者もいたが、ハードルが高い。
何か無いものか?とPower Automate Desktopの記事巡回フローのプロパティ画面を見るとキーボードショートカットの割り当て画面がある。PowerShellでキーストロークを送信すれば、実行できるのではないかというわけでAlt+Aをフローに割り当てる。
PowerShellからキー送信
PowerShellでの実行では、Windows.Formsを読み込むため.NET Frameworkがインストールされている必要があるが、[Windows.Forms.SendKeys]::("%{a}")でキーストロークAlt+Aを送信できる。PowerAutomateの起動は、Start-Process -FilePathで、パスがWin+Rのファイル名を実行で呼び出せるms-powerautomate://になる。
Start-Process -FilePath "ms-powerautomate://"
# System.Windows.Forms名前空間の読み込み
Add-Type -AssemblyName System.Windows.Forms
# 10秒スリープ
Start-Sleep 10
# キー操作で「Alt+A」と入力する
[Windows.Forms.SendKeys]::SendWait("%{a}")
これをtest2.ps1という名前でデスクトップに保存して、ダブルクリックすると
無事、記事の取得が実行できた。あまり多くのウィンドウが立ち上がっていたりすると送信への時間をStart-Sleepで調節しなければならないし、時折求められるサインインでは有効にならない。アクティブウィンドウが変わるからであろうが、筆者環境では滅多に求められないのでこれで奏功する。
タスクスケジューラに設定
あとはWindowsに備わるタスクスケジューラにtest2.ps1を登録するだけだ。Win+Rで呼び出す「ファイル名を指定して実行」にtaskshd.mscと入力し、タスクスケジューラを起動させる。
基本タスクの作成に名前、説明を書いて、「次へ」ボタンを押下。タスクトリガーに「毎日」を設定し「次へ」、次に時間を設定し「次へ」。
「操作」では「プログラムの開始」を選択し、デスクトップに保存した「test2.ps1」を指定する。あとは完了ボタンを押して、設定した時間を待つだけだ。書き込み用のtest.txtをテキストエディターで開いていると実行されないのでしっかり閉じよう。
初回にPS1ファイルの関連付けのダイアログが起動していたのでこれを常にPowershellにして再度設定したところ指定時間に起動した。環境によってはタスクスケジューラに設定する条件タブにある電源やスリープ、権限等の設定を変える必要もあるが、とりあえず時間指定によるWeb巡回定期実行のフローは構築できたようである。