Power Automate Desktopのエラー回避

Power Automate Desktop(PAD)はWindowsの動作を自動化できますが、設定した通りいつも完璧に動くかどうかはわらないということをここ何回かの記事で書いてきました。

Excelに対するVBAはExcelの機能の一部とも言えるので、Excelの処理が終わらないうちに次の動作に移るということはありません。しかし、ExcelをPower Automate Desktopで操作していると、動いているソフトウェア自体は全く違うものなので待ってくれるということをしません。その辺りでエラーがよく発生するのがPower Automate Desktopを含んだRPAの泣き所と言えるでしょう。

タイムアウト

コンピュータ基本的には仕組みとしてソフトウェア、ハードウェアを問わず、 他の機能に動作を指示したらそれが終わったという信号を受け取ります。逆に他の機能から動作の指示が来て、その操作が終わったら終わったという信号を返します。このやり取りがあるから動いているのです。

しかし、すべての動作が完璧に想定した時間通りに終わるかと言うと終わらないこともあります。今でこそほとんど想定時間通りに終わらないということは無くなっているのですが昔はたくさんありました。

もしも想定時間通りに終わらなかった場合はその操作をずっと待つわけにはいきません。ある程度の時間や、やり直し回数を経過したら、動きが止まっていると判断するということが必要になってきます。

この考えをタイムアウトと呼びます。

Power Automate Desktopのタイムアウト

実はPower Automate Desktopも指示しっぱなしではなく、終わったということを受け取っているようです。その終わったということをある一定時間待つようなのですが、 待ってもその信号が受け取れなかった場合はタイムアウトとしてそこでエラーとして止まります。

エラーで止まった時に、どうするかを予め設定することもできます。

しかし、そのエラー状況によって回避する方法が変わってきます。

Power Automate Desktopでは、1ステップごとに、その場で止める、無視して次のステップに行く、できるまで繰り返す、あるステップまでジャンプするといった設定ができます。

それぞれの設定に合わせて、変数を書き換える、サブルーチンを呼び出すといったこともできます。

例えば、エラーになったら、無視して進むけどどの前にフォルダの内容を全部消すサブルーチンを動かしてからにする、といった設定ができます。

Power Automate Desktopで実際に起きるエラー

実際に数十個の自動化するものをPower Automate Desktopで作成してみましたが、ブラウザ関係のエラーが多いようです。Microsoft Edgeを起動すると、Edgeは起動するのですが、Edgeから起動終了の信号が出ていないのか、Power Automate Desktopでその信号を受け取ることができないのかは分かりませんが、Edgeが起動していないとPower Automate Desktopが判断します。

このエラーのポイントは、Edgeが起動せずに起動した信号が受け取れないのではなく、Edgeは起動するものの起動したかどうかが分からないというところです。

この時に、エラーなら何度も繰り返すというエラー回避の設定をすると、Edgeを大量に起動してしまうことになりかねません。自動化した作業が何度も繰り返されているうちにEdgeがどんどん起動されてしまい最終的にコンピュータにメモリ不足を起こしてしまう可能性もあります。

このようなことも想定したエラー回避が必要になります。

ブラウザの起動信号が受け取れない時のエラー回避

ブラウザが起動したかどうかの信号が受け取れない場合、二つのケースが考えられます。Edgeが本当に起動していないのか、Edgeは起動しているけど起動終了の信号が受け取れないのか、です。

確認できたのは処理がやっかいな後者の方だけなのですが、それで対応していると、前者のケースが本当に出てしまった時にエラーを検出できなかったり、間違ったエラー対処してしまったりすることになりますので、前者のケースもありえると考えておく必要があります。

そこで、基本的には後者のケースにスポットを当てて、しかし前者のケースでも対応できる方法が必要になります。

具体的には、ブラウザを閉じればいいのですが、起動したかどうか分からない以上、どのブラウザの画面を閉じたらいいかPower Automate Desktopは判断できません。

そこで、パソコン操作としてのブラウザを取る方法を考えてみます。

Power Automate Desktopでは起動しているブラウザを特定しない限りそのメニューを操作することすらできません。

状況としてはブラウザを起動した状態で止まっているので、ブラウザのアクティブになっているはずです。その状態で、キー操作としてショートカットキーを使ってブラウザを閉じるキーを押せば開きっぱなしになっているブラウザを閉じることができるでしょう。また、この方法であればもしブラウザが起動しないでいても画面に対してショートカットキーが送られるだけなので他に影響が出る可能性は少なくなります。

まとめ

このようにPower Automate Desktopを含むRPAではエラーが起きたことを考えてエラー回避を設定しますが、安易に設定すると何度も動作を繰り返したり、その結果、データを破壊してしまったりすることがあります。

きちんと様々なケースを想定してエラー回避する必要があります。万が一にもデータが壊れることを避けたいのであれば、定期的なバックアップやロールバックができるような仕組み、またはエラー回避をせずに止めるという選択肢になります。

きちんとエラー回避をする場合も、今回紹介したショートカットキー操作のようにどんな状況でも操作できるような方法を選択することや、そのエラー回避の方法をしたところで別のシチュエーションだと影響が出てしまうようなことがないように注意する必要があります。

コメント

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