Power Automate Desktop:無料バージョンだけで定期的にフローを自動実行する方法(アイデア)

Power Automate Desktop

初めてRPAツールを触る方や基本的なプログラミング学習向けに、Power Automate Desktop(PAD)をスケジューリングして自動実行を行う方法について解説しています。ご自身の環境で動作可能なフローのテンプレートも共有して説明していますので、Power Automate Desktopを使った自動化フローを作る際の参考にしてみてください。

マイクロソフトの無償RPA(自動化ツール)である「Power Automate Desktop(PAD)」で、定期的にフローを自動実行する方法ついて解説しています。

Power Automate Desktopは無料のツールですが、標準機能として定期的なスケジュールによる実行や、トリガー(きっかけ)を使ってフローを開始させることができません。

ただ、ある時間になったらアクションを続行するようなフローを応用して組み立てることで、無償版のPower Automate Desktopのみでもスケジュール実行のような動作を実現させることも可能です。

今回はフロー設計の一案として、毎日決まった時間になったら開始するようなフローをご紹介します。

無料自動化ツールの「Microsoft Power Automate Desktop」について、そもそもの解説や導入方法についてはPower Automate Desktopについてをお読みいただくと基本的な使い方などが確認できます。

Power Automate Desktopの無償版、有償版の機能の違いについて

Power Automate Desktopは無償で利用できますが、有償ライセンス版のPower Automate Desktop版もあり、こちらではいくつか追加機能を利用することができます。

無償版と有償版のPower Automate Desktopには下記のような違いがあります。

無償と有償のPower Automate Desktopと大まかには以下の違いがあります。

無償のPAD有償のPAD
Power Automate Desktop が用意しているすべてのアクションの利用○○
クラウド フローとの連携☓○
スケジュール実行☓○
トリガー実行☓○
他人とフローの共有機能☓(★)○
同一アカウントによる複数PC間のフローの共有機能○○

なぜ、スケジュールやトリガー実行ができないかというPower Automate Desktop は、クラウド フローからデスクトップ フロー(Power Automate Desktop)を呼び出して起動することを前提としているためです。

出典:【Windows 10版でどこまでできるか】Power Automate Desktop のライセンスやできることや気になることまとめ【随時更新】

上記の通り、無償版のPower Automate Desktopでは標準機能として「スケジュール実行」や「トリガー実行」が利用できません。

無償版のPADでフローを定期的に実行する

無償版のPower Automate Desktopではスケジュール実行をするための機能はありませんが、アイデア次第で無償版のフロー作成に利用可能なアクションを組み合わせることで、現在の時刻や経過時間を判定し、アクションを定期的に行わせることも可能です。

具体的には「現在の日時を取得します」アクションと「加算する日時」を使い、次回スケジュール実行する日時を算出し、定期的な繰り返し処理によってその時間がスケジュールの時間に到達したかどうかを判断します。

以下より、サンプルフローを使って解説します。

フローを定期的に繰り返し実行するフローのサンプル

ここでは定期的にフローを実行するサンプルとして、5分おきにメッセージボックスを表示するテンプレートをご紹介します。

サンプルフロー

作成したフローのスクリーンショットです。

サンプルでは動作の確認を行いやすくするために、定期スケジュールの間隔を「5分」、実施するアクションは「メッセージを表示」するのみのシンプルなものですが、スケジュールの間隔を「1日」にしたり、実施するアクションを加えたりすることで、さまざまなフローを定期的に実施することが可能です。

アクションの解説

まず、本来メインのアクションとなる定期的に実行されるアクションはステップ3に配置されています。

今回のサンプルではスケジュールが来たことを知らせる「メッセージを表示」アクションを実行していますが、この部分を変更することでいろいろなアクションを定期的に実行することが可能です。

現在時刻を取得して日時の加算を行う

メインのアクションが実行された後、ステップ4とステップ5では次回実行する時間を取得、算出して設定しています。

まず、ステップ4の「現在の日時を取得します」アクションを使って、メインのアクションが実行された直後の日時を取得しています。そしてこの情報は%RunDateTime%という変数に格納しています。

次に、ステップ5ではこの%RunDateTime%に格納された情報に対して「加算する日時」アクションを使って次に実行する日時を取得しています。今回の例では「5分後」を次のスケジュールとするために、[加算] に「5」、[時間単位] を「分」と設定しています。

また、ここで算出された日時は%ScheduledDateTime%という変数に格納しています。

この「加算する日時」アクションの [時間単位] には「分」だけでなく「年」「月」「日」「時」「秒」などの時間単位が利用できますので、数秒後や数日後など、幅広い範囲でスケジュール時間を設定することが可能です。

スケジュールされた時間になっているのかどうかを定期的にチェックする

ステップ6からステップ9では、次回のスケジュール日時にになるまでに待機するアクションが設定されています。

今回のポイントとなる「While」アクションを使ったループ処理ですが、ここでは以下のように設定しています。

まず、[最初のオペランド] には前項で取得した%ScheduledDateTime%を指定し、[2番目のオペランド] には%CurrentDateTime%を指定します。

そして、[演算子] には「より大きい(>)」を指定します。こうすることで、ループを繰り返す条件が「スケジュールされた日時が現在の日時より大きい(まだスケジュールに日時に到達していない)ときに繰り返す」という条件ができあがります。

ここで、繰り返しこのループが回り続けることによって、指定した時間が来るまでぐるぐるとフローをとどめておくことができます。

また、ループの中はこの現在時刻の取得以外のアクションは特に不要なのですが、ループを短い間隔で回し続けるとPCへの負荷も発生するため、「Wait」アクションを使って少しチェックする間隔を空けています。

フロー全体を無限ループさせる

そして、最後にこれらのアクションが自動的に終了してしまわないよう、ユーザーが手動でフローを実行を止めるまで無限にループさせるようにします。

ループを無制限に繰り返す(無限ループにする)には、「ループ条件」アクションを配置し、以下のように設定します。

[最初のオペランド] と [2番目のオペランド] それぞれの値を「1」にし、[演算子] を「と等しい(=)」に設定します。

こうすることで、条件が常に一定で変化せずループ処理の判定が真になり続けるため無制限にループが繰り返されます。

この設定を使用するとエラーなどが起こらない限りフローが自動的に停止することはありません。フローを停止するには手動で停止を行います。

このように、繰り返し処理と時間の取得処理を組み合わせることで、指定の日時になったらフローを実行するなどの処理をフロー内のアクションでコントロールすることが可能です。

サンプルコード(Robin)

今回のサンプルフローのRobin言語ソースコードです。

コードをコピーし、Power Automate Desktopの編集画面に張り付けると、テンプレートとしてアクションをご自身の環境でそのまま利用することができます。

LOOP WHILE (1) = (1)
    # ここにスケジュール実行したいアクションを配置します。
    Display.ShowMessage Title: $'''メッセージ''' Message: $'''5分経過したよ''' Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed
    DateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> RunDateTime
    DateTime.Add DateTime: RunDateTime TimeToAdd: 5 TimeUnit: DateTime.TimeUnit.Minutes ResultedDate=> ScheduledDateTime
    LOOP WHILE (ScheduledDateTime) > (CurrentDateTime)
        DateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> CurrentDateTime
        WAIT 10 
    END
END

フローの共有、共有されたコードの利用の詳細については作成したフローを他のユーザーに共有する方法でも解説しているので、併せてご参照ください。

まとめ

無償版のPower Automate Desktopを使ってフローをスケジュール実行する方法について解説しました。

フローのスケジュール実行はもともと無償版のPower Automate Desktopには用意されていない機能のため、今回ご紹介した例は本来のスケジュール実行機能と同じ動作が期待できるものではありません。

また、サンプルの動作を詳しく読み取っていくとわかりますが、今回判定に使った条件や日時の計算は、その時に取得した時刻などから相対的な計算を行っているため、そのアクションに到達するために経過したタイムラグなどによって次回のスケジュール時間が少しずつずれてしまう設計になっています。

サンプルではスケジュールのチェックが10秒おきに行われ、次回のスケジュールはそのチェック時間を基準に時間が加算されるため、次回のスケジュール時間には1回ループするごとに最大10秒前後ずつ遅れて設定されてしまいます。

次回スケジュールの日時を現在時刻で更新するのではなく、フローを最初に実施した日時を使うことでより正確なスケジュールを算出することなどもできますので、今回の日時の計算方法以外のやり方についてもいろいろチャレンジしてみてください。

クラベルではほかにもテンプレートとして使えるPower Automate Desktopのフローサンプルを解説付きでご紹介していますのでぜひ参考にしてみてください。

お読みくださりありがとうございました。今回の内容が少しでもお役に立てば幸いです。

コメント

  1. 初めまして。
    PowerAutomateDesktopを業務に取り入れるべく勉強中です。
    条件分岐の記事が大変分かりやすくハラオチしました!助かります~。
    ちょっと行き詰っていまして、質問なのですが、
    Webサイト上から売上データを取り込みたいのですが、
    日付「YYYY/MM/DD」にURLリンクが貼ってあるボタンがどうしても押せません。
    API連携されておらず、管理者に問い合わせましたが、別ページからの取得はできない(このボタンを押さないとほしいデータは取り込めない)とのこと。
    もしご存じでしたら方法を教えていただきたいです。
    よろしくお願いします。

  2. 超初心者です。コードなどは全くわかりませんが、無償で使用できると聞き、PowerAutomate Desktopをダウンロードし、実際、サンプルをまねて実行したら、時間かかりましたが、最終的には実行できました。一旦保存して、実行しようとすると、編集不可、実行不可となっています。一旦保存したフローを編集したり、実行するにはどうしたらよいでしょうか。

    • ココナッツさま
      無事フローが動いたようでよかったです。
      いただいた事象ですが、本来なら編集や実行はできるはずなのですが、編集も実行も不可になる問題は私もまれに遭遇します。発生原因についてはよくわかっていません。。

      もしエラーメッセージが出たような場合はPower Automate Desktopを再起動することで今のところ当方の環境では元に戻っています。
      下記のページの下にあるPower Automate Desktopの再起動を試してみてはいかがでしょうか。
      (パソコンの再起動でも良いと思います。)
      https://cravelweb.com/rpa/power-automate-desktop/power-automate-desktop-the-cache-contains-multiple-tokens-satisfying-the-requirements-error

タイトルとURLをコピーしました