無償の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で調節しなければならないし、時折求められるサインインでは有効にならない。アクティブウィンドウが変わるからであろうが、筆者環境では滅多に求められないのでこれで奏功する。