パソコンの使い方を教えるのによく「勘所」という言葉が使われるのですが、あまり私自身は好きではないのですが、パソコン全体を自動化することを考えていくと、まさに「勘所」と呼ぶべき、表現が難しいテクニックやスキルが存在しているようにも思えることがあります。
その勘所をできるだけ明文化して行きたいと思います。
作る時にエラーは出したくない
昨日の記事では、Power Automate Desktop(PAD)などのRPAでは、作るのが大変というお話をしました。パソコンで効率化するツールを考えた時に、作ったらすぐに運用し始められるものでなければめんどうくさいと思うのは当たり前で、そんな中RPAは何かを作るのに一つの手順ずつ動作を確認しながら進めていくことになります。その意識の違いが自動化を完成までもっていけない一つの理由になっていると思います。
できるだけエラーを出さずに、できるだけ動作確認を一回で済ませるような方法はどんな方法が考えられるでしょうか。
RPAは何を調べているか
RPAを作成するために、できるだけ簡単に作っていくためには、あらかじめエラーが出ない作り方を完璧にマスターし、絶対に作ったら次の瞬間動き出すものを作るというのは、自動化する内容によっては出来るのですが、画面を認識したりするようなRPAの場合、その画面を実際に表示するところまで作成し、その画面の実物で、ここだというようにRPAに指示します。RPAはその指定された画面上の座標だったり、その指定された箇所のスクリーンショットだったり、指定された場所に設定されているID番号だったりを認識します。どれになるかは取り込むものによります。Power Automate Desktopの場合は次のように取り込んでいるように見えます。
- Excelのセルは縦横で指定できます。フローに登録しながら番号で指定できます。
- WebはHTMLに書いてあるタグやクラスやIDの番号を見ます。フローに登録しますが、その指定するそのものを内部変数のように指定しているようで文字入力による指定はできるのですが、かなり難しいようです。作った変数で検出する名前を指定することはできないようです。
- その他のものは登録したその位置の画像を画面の中から探します。画像を指定するので文字による指定はできません。
それぞれ、どの方法で取り込まれているかを知ることであらかじめどこまでの流れを作り込んでから動作を確認すればいいかがわかります。
作成の流れ
作成の流れを、次のようなものを作成する流れで説明します。
あるExcelファイルに商品番号の一覧が載っています。
その商品番号をAmazonで検索し、Excelの商品番号の右にその金額を検索した内容を書き込みます。
まず、指定のExcelのファイルを開いて、商品番号を読み込み、Excelを保存して閉じるという流れであれば、Excelだけの動きなので動作確認せずに作ることができます。
そしてブラウザが必要になるのがExcelワークシートから読み取りの後になります。ここでブラウザを開きその商品番号の商品のAmazonのサイトを表示します。 この流れも、URLに「https://www.amazon.co.jp/dp/」に続き、Excelの商品番号を指定すればいいだけなので動作確認せずにできるでしょう。
問題はその次なのですが、このページを表示しないと商品の単価がどの位置にあるものか指定することができません。
そこで、蒸気の流れだと4のExcelを閉じる動作にブレークポイントを設定して、停止させてそこで表示されているブラウザの商品番号の位置を取り込む設定をします。
そしてここで変数に Web ページからのデータが抽出されているかどうかをまたブレークポイントで動作を止めて確認します。
確認の前には開いているExcelとブラウザを閉じるのを忘れないようにしましょう。
ブレークポイントで動作が止まった後に変数一覧のその変数をダブルクリックすると変数の値を表示することができるのでそれで確認します。
ブラウザを閉じてExcelに書き込みます。
後は、Excelのデータを取り込んでAmazonで検索した値を取り込んでExcelに書き込むという流れを繰り返すために、Excelで処理される行番号をループさせる流れを入れます。
Excelで読み取られる行番号と書き込まれる行番号をループの回数に合わせます。
ここまで作成したら全体が出来上がりなので、開いているExcelとブラウザを閉じて全体的な動作チェックを行います。
動作チェックの結果ブラウザとPower Automate Desktopの連携がうまく行われないと次のような感じでエラーになり、動作が止まります。
この原因を探ることも必要なのですが、そのエラーが出るたびに表示しているExcelとブラウザを閉じなければならずとても面倒です。
原因を探るとすればエラーを何回も出してみてそれでやっと探り当てられるということもあります。
どんな状況でエラーが出るかというのは経験でしか分かりませんので、一つ一つ探る必要があります。
原因の一例としては次のような、ポップアップ表示があります。幸いなことにポップアップが表示されたら消すというオプションがWebの設定にはあります。
このように詳細設定で何ができるかも数多く知っておけば早くエラーにたどり着くことができるでしょう。
もしも取り込めないような時はエラーを設定し、その後に続行するか決めることが出来ます。
今回はブラウザから金額を抽出しますがもし抽出できない時はそのまま次の流れに行くようにしたいと思います。しかし、ここで気を付けなければいけないのは金額の変数はその前の商品の金額になったままということです。そのままではエラーではなくその前の商品の金額がその商品の金額として入ってしまうので、きちんとエラーの時は変数を違うものが入るように設定します。
このようなエラーが出るたびにブラウザとエクセルを閉じなければならないのです。しかも Excel に値を書き込んだ後に動作が止まったのであれば、その値を消す作業も必要です。今回のように1列だけに書き込むところが集まっているのであれば消すのは簡単ですが、あちこちにジャンプしていたり、書き込むファイルが一つ一つ違ったりする場合などはリセットするのにとても手間がかかります。そこは覚悟しておく必要があるでしょう。
いきなり運用か
ここまでで問題なければ動作させることは可能です。1つの商品の値段を調べるのに8秒なので、終夜で8時間動かすとして3600商品を調べられるので、今日の退勤時に商品番号を3600個入れておいて、明日の朝にその処理結果を受け取れるかどうかというと、途中で動作が止まっていることが目に浮かびます。それが10個目かもしれないですし、3599個目かもしれません。あるいはきちんと最後まで処理されているかもしれません。やってみないとわからないのですが、過信して大量のデータを、自動的に処理をしてもらえるものとして予定を立てていると痛い目を見ますので、もしやりたいときは終夜ではなく、勤務時間内に動作を確認し、途中で止まったらできたところまでをどこかにバックアップしてその続きを処理していくという風にしたらいいのではないかと思います。
未来永劫24時間体制で動くものを作るには、何度も動作確認しエラーが出なくなってから1週間以上の動作確認を経て、実際の運用に移ると考えておきましょう。
そういった意味ではPower Automate Desktopはいろいろなことが出来る代わりに、作成開始から運用スタートまではVBAだけで作成するものに比べて10倍以上の期間が必要になります。
まとめ
以上が実際にPower Automate DesktopやRPAを組み立てる場合の進め方の基礎です。それ以外にも様々なエラーや進めなくなることがたくさんあります。
その度に調べながら進めたり、実際に動作させたりしてみないと分からない所は動作させて調べてみるという形になるので何度も元の状態に戻してやり直すという手間がかかります。
それをできるだけ抑えることができるかどうかがポイントです。
例えば元の状態のExcelファイルを別フォルダーにもう一つ作っておいて、すぐにその内容をコピーすれば初めの状態にすぐに戻るような状態にしておくなど、単純なことで良いので初めにそのような準備をしておくと良いでしょう。
苦労はしますが、これでVBAだけではできないIE以外のブラウザによるWeb連携についても可能になるのです。
コメント