Power Automate Desktop 無償版では、フローを定期実行することはできません。
しかし、ネットで調べてみたところ、いくつか方法が載っていました。
PADで定期自動実行する方法
URLを指定してフローを実行する方法
2022年6月のアップデートによって、URL経由でPower Automate for desktop(PAD)のフローを実行できるようになりました(バージョン 2.21 以降)。
引用:[Power Automate for desktop]URL経由でデスクトップフローを実行する
一番簡単そうだったので、まずこの方法でやってみることにしました。・・・が。「環境ID」「フローID」が見つかりません。設定>更新プログラムの確認を見てみても、バージョンは最新になっていました。
っていうかそもそも「URL」がないんだけれども。。。もしかして、これPADじゃなくてweb版(Power Automate)なんじゃないのか!?
Power Automateからフローを開いてみると、環境IDとフローIDを持つURLが表示されました。
どうやらこの記事はPower Automateの無償版でフローを自動実行するという内容だったようです。
ちなみに、Power Automate DesktopはブラウザではなくWindowsのアプリの一つになりますのでURLはありません。ファイルの実体はOnedrive上に保存されます。
無限ループを回し続ける
PADのフロー内で無限ループを回し続けるという方法もいくつか出てきました。手順としては、
1.実行日時を入れる変数(=CurrentDate)、時間を入れる変数(=CurrentHour)を用意
2.フロー実行日=CurrentDate 、フロー実行時間=CurrentHourの場合にフローを実行
3.次回実行する日時、時間を設定(1日後の同じ時間に実行したいならCurrentDate+1、CurrentHourはそのまま)
設定した日時に一致するまでループをぐるぐる回し続けるというのが、なんとなくやりたくないなーと思ってしまいます。また、PADが常に起動していることが前提となっているので、その点にも注意が必要です。
Power Automate(Web版)から実行する
Power Automateから定期実行できるという記事もありました・・・が、Power Automateは無料期間が1か月程度で、最低でも1600円/月以上かかります。会社などでweb版を使える場合はこの方法もありかもしれませんが、本記事では「無料で」行うことを目的としているので別の方法で試してみようと思います。
【これでできた】タスクスケジューラからbatを実行する方法
タスクスケジューラとはMicrosoft Windowsが持つ機能のひとつで、予め設定した日時にプログラムを実行することのできる機能です。
スケジュールは「ログオン時」「イベント時」など選べるほか、n日おき、〇曜日など細かく設定できます。
実行するプログラムは、「操作」タブから設定できます。
詳しくは、以下の記事を参考にさせていただきました。
引用元:【DX】PowerAutomate Desktop無料版を自動定期実行してみた!
とっても分かりやすくて、こちらの記事を参考に設定すれば問題なく出来るかと思います。
ps1ファイルは中身を全く変更することなくそのまま使用させていただきました。
下記二つを書き換えて作成してください。
引用元:【DX】PowerAutomate Desktop無料版を自動定期実行してみた!https://note.com/airily_inc/n/n6ab8b688d4ad
StartPADFlow.ps1:先ほど作成したPowerShellファイルの名前です。
”フローの名前” :動かしたいフローの名前です。
上記バッチ内の「cd /d %~dp0」は、実行されるファイルが置かれているディレクトリに移動するという意味になります。
タスクスケジューラからきちんと動くかどうか、手動で実行してみます。
問題点:正常に終了したとあるが、実行された形跡がない
手動実行してみたところ、ステータスは正常に終了したとあるのに、実行された形跡がありません。
「前回の実行結果」には「0x1」とありました。
また、「オペコード」というのが(2)となっています。これが正しいのか正しくないのか分かりませんが、オペコード 2 で検索してみました。すると、権限が足りていないことが原因の場合がある、という記載がありました。
タスクスケジューラの設定ウインドウ>全般にある「最上位の特権で実行する」にチェックを入れて実行してみました。
しかし、先ほど同じ状態になりました。
そこで、batファイルのショートカットを作成し、そのバッチファイルに管理者権限を付与しました。
ショートカット>プロパティ>詳細設定
・・・・だめでした。
直接バッチファイルをたたくと実行されるので、ファイル名、ファイルパスあたりが原因になっていそうです。
ファイルパスに日本語が含まれていたので、全て英語表記に変更して実行してみました。
無事、実行されました。
ファイルやフォルダ名に日本語(全角文字)が含まれているとうまくいかないようです。
注意点
当たり前ではありますが、PCが起動していないと実行されません。オフラインの状態でPADの処理を自動実行する方法は、私が調べた限りは見つかりませんでした。
23/10/15追記:いつの間にかサインアウトされる問題の対策
(2023/10/15追記) いつの間にかPower Automate Desktopがサインアウトされていて、定期実行に失敗することがありました。組織アカウントだとセキュリティポリシーの関係で定期的にログアウトされてしまうようです。
そこで、その対策を以下記事で解説しました。同じような悩みのある方はご一読ください。
23/10/19追記:ログオフ時にフローを実行する方法
Windowsからログオフしている場合やスクリーンセーバーになっている場合にフローを実行する方法については、以下記事にてまとめています。
まとめ
無事にPADのフローを定期実行することができるようになりました。PCを起動しているときのみ利用できるものではありますが、私の場合、打刻忘れが多く自動で打刻したいという目的なので、特に問題なく利用できるかなと思います。
「Power Automate Desktop」と調べるとウェブ版も検索結果に出てくるので紛らわしいですね。でも、参考になる記事が出てきて良かったです。今回参考にさせていただいた記事は会社の技術ブログのようです。現役の社員さんが書かれている記事ということで、今使われている技術や人気のツール、言語などが多く、時代に取り残され気味な自分にとってはとてもありがたいです。(決して回し者ではないですよ!)
あと、勤務時間内にブログを書かせてくれるのも良いですよね。私がSEとして働いていたときは、社内ブログもなく、社内Wikiはありましたがあまり活用されてる感じじゃなかったのでひっそりと個人ブログを書いていました。そのブログのお陰で次の転職先の採用面接時にアピール材料になったので結果オーライですが!
コメント
>ファイルやフォルダ名に日本語(全角文字)が含まれているとうまくいかないようです。
batファイルとps1ファイルをともにShift-JISで保存すると日本語でも問題なく動作すると思います。
コメントありがとうございます。
先ほど、Shift-JIS、UTF-8それぞれで、日本語が含まれるファイルを作成し試してみましたが
どちらもエラーなく実行できました。
ブログ記事にあるエラーを再現できませんでしたが、Windowsでbatファイルを実行する際の文字コードはSJISが前提なので、
SJISにしておくのが間違いないですね・・・!ご指摘ありがとうございました。
参考になる記事ありがとうございます。
一点気になったのが、
>どうやらこの記事はPower Automateの無償版でフローを自動実行するという内容だったようです。
の箇所です。PADの有償機能でURLによる実行は可能なはずです。元記事にも、
「ただし実行するには有償ライセンスが必要で(試用版は可)、広く使われている無償のMicrosoft アカウント環境では実行できません。」
と記されています。現在では、PADフローのプロパティの詳細情報タブに、コピペできるURLが出てきます。
ご参考までに。
yh様
コメントありがとうございます。
>現在では、PADフローのプロパティの詳細情報タブに、コピペできるURLが出てきます。
こちら存じ上げませんでした・・・情報ありがとうございます。