皆様こんにちは。今日は今はやりのマイクロソフト製RPA Power Automate Desktopを使用してみました。
RPAとはRobotic Process Automationの略で、機械的な自動化作業を行うツールの総称のようです。簡単にいうとロボットがあなたの代わりに作業を行ってくれるというジャンルになります。
どんなものか試してみましたが、MS Power Automateに限って言えば、ビジュアルプログラミングに近い概念かなと思うところがありました。
非常に似ている。ノーコードといはいえ、ある程度プログラミングの経験がある人の方が入りやすい分野のようです。
Table of Contents(目次)
自動化作業をパーツを組み合わせる事で行う事ができる
あらかじめ用意されたパーツをパラメータを組み合わせて自動化させるために組み合わせていく。
そんな作業を行っていきます。正直言うと場合によってはプログラミング言語の方が柔軟に記述できると思うような場面もありました。実際に画面をみていきましょう。
フローとは自動化した処理の流れのことです。フローが作成されていないのでフローを作ります
フロー名を入れて次へ進みます。
そして行いたい処理を記述していきます。
処理を記述する
Firefoxなら「Firefoxを起動する」などとします。そして処理を行うと何らかの出力などのデータが変数に格納されます。
Firefoxの場合は、ブラウザーを操作するためのインスタンスを格納した変数が作れらます。これはブラウザ操作のために必要であとから参照できます。
このように後から参照するブラウザーを指定するために使います。例えば二つブラウザーを開いた場合などにBrowser,Browser1などと、参照する(操作対象の)ブラウザーを区別する事ができます。
エラーが出る場合も
ただ私がためした所なにやらエラーがでて操作できませんでした。エラーが出た時に情報がまだすくなくデバッグが大変なのでちょっと困りものですね。
少しいじったところエラーの原因は分かりましたが、どうもソフトウェアが足りなくて動かないエラーの場合も多いようです
Chrome を制御することができませんでした (内部エラーまたは通信エラー)。
このエラーですがクロームを外から操作するためのオートメーションが、インストールされていないか、機能がオフになっているため動かないようです。初期状態ではおそらくこれはインストールされていませんので、インストールが必要です。
それからOCRでも似たような現象が起こっていました。
OCR を使ってテキストを抽出できません
テキストが画面に表示される場合(OCR)
という項目や
OCRを使ってテキストを抽出
などといった項目がありますが、まずはOCRのエンジンを初期化してオブジェクトを作る必要があります。
OCR
の中の「tesseract OCRエンジンを作成」や「MODI OCRエンジンを作成」でエンジンを作成し、インスタンスオブジェクトを%OCREngine%に追加した後。
上記の項目、「OCRを使ってテキストを抽出」などでエンジンの参照を設定します。エンジンを生成したにも拘わらず
ERROR:「OCR を使ってテキストを抽出できません」が出る場合があります。これはOCRエンジン自体がインストールされていないことによるエラーである可能性があります。不親切にもこの情報だけではエラーの原因がわからないため悩むことになります。
このように項目にあるからと言ってそのソフトや、必要なソフトウェアがそろっているとは限らないため注意が必要です。訳の分からないエラーに見舞われた場合はまず必要なソフトウェアがあるかどうかは疑った方がよいでしょう。
テキストが画面に表示される場合(OCR)の機能と代替
なお「テキストが画面に表示される場合(OCR)」は非常便利そうな機能ではありますが(機能としては画面を読み取ってその間待機するといった使い方ができます。)、ですが、OCRの精度もそれほど高くなく、確実性がないのと処理が遅いため一瞬だけ出る画面にはタイミングが合わず使えないという事があるようです。
なので画面が出るまで待機したいような場合には、画面のタイトルを使って取得する方がよい場合の方が多いでしょう。サンプルコードを記述しておきます。
これらのウェイトは画面がでるまで待機し、キーストロークを送って画面を操作したい場合などに役立ちます。「マウスとキーボード」の、「キーの送信」と相性がよいと思います。
ループ====
ウィンドウが次の条件を満たす場合(ウィンドウの取得:タイトルやクラスごと)(ウィンドウタイトル:チェックしたいタイトル)(ウィンドウが次の条件を満たすかどうかを確認する:開いていない)→Wait 1 Seconds
ウィンドウが次の条件を満たす場合(ウィンドウの取得:タイトルやクラスごと)(ウィンドウタイトル:チェックしたいタイトル)(ウィンドウが次の条件を満たすかどうかを確認する:開いている)→ループを抜ける
ループEND==
非同期処理をしたい場合はサブフロー
Power Automate Desktopで記述した処理はほとんどが同期処理(実行を終えるまでは次の処理に移らない)になります。非同期に実行したい場合はサブフローを作成すると良いようです。サブフローは上の方のサブフローより作成できます。
不満:Microsoft Power Automate Desktopはフローをコピーできない できるそうです。
非常に不満なところなのですが、このツールはフローをインポートエクスポートして、一度使ったフローの派生フローを作ろうとした場合に、できないようです。
他のバージョン(?)の有料版にはあるっぽい(?)ですが、作った人とアカウントを共有するかしないと作った人しか使えませんし、アカウントにクラウドでは保存されるようなのですが、困りものですね。もっと便利に使いたい人は有料のやつを買えということなのでしょうか
2021年6月 追加情報
できるそうです。フローをすべてコピーするならフローをすべて選択して(CTRL+A)右クリック。出てくるメニューでコピーを選びます。
するとクリップボードにその内容を示すプログラムコードがコピーされますので、メモ帳に一度コピーします。そのテキストファイルを保存し、ほかのパソコンに持ち込んでテキストファイルを開き、貼り付けたいプログラムコードをコピーし、Power Automate Desktopのフロー画面に右クリックで張り付ければちゃんとコピーすることができるようです。
どうぞお試しあれ。まあ一度メモ帳にコードをコピーするというのがみそのようですね。このコードはRobinとかいうRPAのためのプログラミング言語のようです。すべての操作は内部的にコードに変換できるようですね
Power Automate Desktopまとめ
いかがでしたでしょうか。これらのツールを使えば様々な処理を自動化できるようです。
プログラミングするより簡単に画面を操作する事ができます。Windowのハンドルやタイトルを取得して画面を待機するなどといった処理はプログラミングで書くと複雑で難しいコードとなりますから、簡単にかけるこれらのツールは便利であるといえるでしょう。
ただ所々はコーディングした方が早い場合もあり、住みわけが必要ですが、VBSなどのコードやコマンドや、アプリケーション、パワーシェルスクリプト等もMS Power Automateから呼び出せるようです。ハイブリッドで行くのが一番スマートな気がします。(個人的な見解です)これらのツールを使えば様々な処理を自動化できるので使いどころを工夫すれば業務を効率化できるでしょう。
年間に何百回も同じ処理をしてめんどくさいと思っている方は使ってみる価値ありです。それでは皆様よいPCライフをお送りくださいませ。それではまたお会いしましょう。