無料 RPA のPulover’s Macro Creatorを使って、1から RPA を作れるようになるチュートリアル、第5回です。今回は「ウィンドウ」コマンドを使用して RPA をもっと便利に、より高機能にする基本を学んでいきます。
RPA ツールでウィンドウを操作する
この記事が役に立つ人
- Pulover’s Macro Creator の RPA 作りを基本からじっくり学んでいる人
- PMC で PC 上のウィンドウをより正確にコントロールしたい人
- PMC のウィンドウ操作の基本を学びたい人
関連記事
本連載の目次や、Pulover’s Macro Creator のまとめ情報は以下のページにまとめています。
ウィンドウ操作って?
そもそもウィンドウ操作とはなんでしょうか? 前回、タイトルバーをドラッグしてウィンドウを移動しました。これもウィンドウ操作です。また、マウスでアクティブでないウィンドウをクリックした場合も、マウスでクリックしたというアクションとは別に、ウィンドウをアクティブにするというアクションが記録されていました。
PCの世界では、こういったウィンドウを移動したり、アクティブにしたりといった操作は、OS( Windows )が一括して管理しています。交通整理をWindowsがしているといってもいいですね。なぜかというと、私たちユーザーがマウスでクリックするたびに、起動しているすべてのアプリケーションが「自分がクリックされたのかな?」と処理を走らせていたら、PCが重くなってしまうからです。
一つのアプリケーション内で完結するマクロと違って、いろいろなアプリケーションにまたがって操作を自動化できる RPA では、このウィンドウ操作がとても大事な操作になります。一方で、 RPA の売りである手軽さと真逆に、「PCの中の世界」を意識する部分でもあるので、商用 RPA ではもう少しソフトな表現をしたり、余り使わない機能はばっさりカットしてしまうこともあります。
Pulover’s Macro Creator は、ベースとなる AutoHotKey がスクリプト言語を1から記述することが前提、つまりある程度プログラムが書けることが前提でした。そのため、ウィンドウ操作が PC の仕組みまではよく知らないユーザーにはかなり分かりにくい表現となっていて、とっつきづらさにつながっています。
でも大丈夫です。この記事でよく使うウィンドウ操作についてはしっかり解説するので、皆さんは理解して使いこなせますよ。
RPA では基本の「ウィンドウをアクティブにする」と「アプリケーションの起動」を待つ
前回のマウス操作で作成した、メモ帳を起動してドラッグする RPA を開いてください。もしまだやっていない方は、作成してきてください。
アプリケーションの起動(ウィンドウの表示)を待つ
これまで作ってきた RPA では、各アクションの遅延や[Pause]アクションに適当な時間を設定して、メモ帳や電卓の起動を待ちました。しかし、PC の負荷状態によって上手く動かなかったり、安定性をとると動作がゆっくりすぎたりと、スマートではありませんでした。そこで、ウィンドウが表示されるまで待ってから、続きを実行してみましょう。
開いている RPA で、 WinActivateをクリックして選択します。その状態でF6キーまたは、ウィンドウボタンか「コマンド」メニューから「ウィンドウ」をクリックします。
「ウィンドウ」コマンドの編集ダイアログが表示されます。
まずは、コマンドをWinWaitに設定します。
つぎに、必須ではないですがタイムアウトを10秒にします。
WinTitleボタンをクリックして出て来た設定パネルを以下のように設定します。本連載をずっとやっている方は、とくにいじる必要がないと思います。
最後に、メモ帳を起動してから、「…」ボタンをクリックします。Pulover’s Macro Creatorのウィンドウが隠れて、ツールチップがついてくる「選択モード」になるので、メモ帳のウィンドウを右クリックします。
すると、テキストボックスに「ahk_class Notepad」と入力されるので、OKをクリックします(この文字はWinActivateと同じ文字なので、コピーしても構いません)。
WinActivateアクションの上にWinWaitアクションが追加されたでしょうか? もし、順番が違ったら、ドラッグして並び変えてください。
このWinWaitアクションがPauseの代わりになるので、Runの次のPauseは削除します。ここまでできたら、メモ帳を閉じてから、 RPA を実行します。
上手く動作すると、メモ帳が起動してからすぐにドラッグ操作が実行され、ウィンドウが移動します。
名前をつけて保存を待つ
実務における RPA でも頻出のもう1つの使い方、「「名前を付けて保存」ダイアログを待つ」もやってみましょう。もちろん、ファイルを開くダイアログにも応用できます。メモ帳が起動していない方はメモ帳を起動します。
そして、メモ帳をアクティブにして、Ctrl + Shift + sキーか、メモ帳の「ファイル」メニューから「名前を付けて保存」をクリックします。「名前を付けて保存」ダイアログが表示されたら、Pulover’s Macro Creator のメインウィンドウに戻り、「Move」アクションを選択して、F6キーまたは他の手段で、「ウィンドウ」コマンドの編集ダイアログを表示します。
コマンドは今回も「WinWait」、タイムアウトも同じく「10(秒)」とします。
「…」をクリックする前に、「WinTitle」ボタンをクリックして、上図のように「Title, Process」にもチェックをつけます。チェックを付け終わったら、「…」ボタンをクリックし、「名前を付けて保存」ダイアログを右クリックします。そうすると、下図のような状態になります。
今まで、「ahk_class Notepad」だけだったのが、随分長くなりました。これについて詳しく解説すると、とても大変なのでここでは概要を解説します。
- 「名前を付けて保存」の部分は、ウィンドウのタイトルです。
- ahk_class の部分は続く文字列がウィンドウのクラスを示す、という合図です。
- #32770の部分がウィンドウのクラスです。メモ帳のメインウィンドウでは、Notepadでした。
- ahk_exe の部分は、続く文字列がウィンドウを実行しているプロセス(実行ファイル)を示す、という合図です。
- notepad.exe がプロセスを示しています。実行ファイルと同じ名前になっていますね。
今回、ウィンドウクラスだけの指定でなくしたのは、 #32770が非常によく使われるウィンドウクラスだからです。ウィンドウクラスとは何か? というと、ウィンドウの種別みたいなものだと思ってください。アプリケーションのメインウィンドウについては、大体のアプリケーションが独自の種別(見た目も違いますよね)を持っているのですが、一方でダイアログについては、大体のアプリケーションが、Windows が用意している標準のものを使い回しています。
そのために、 #32770 というだけでは、他にもこのダイアログが表示されていて、そちらと誤解するかもしれません。
そこで、「名前を付けて保存」というタイトルでまず区別します。これで、「開く」ダイアログと誤解することはなくなりました(「名前を付けて保存」と「開く」ダイアログはどちらも #32770です!)。
さらに、別のアプリケーションが「名前を付けて保存」を表示しているかもしれません。そこで、実行しているアプリケーションがメモ帳であると指定するために、プロセスをnotepad.exe と指定しました。
これで、複数起動したメモ帳が「名前を付けて保存」ダイアログを出しっぱなしにでもしていない限り、誤動作はほぼ起きなくなります(もちろん、ウィンドウタイトルについては、ファイルの状態によって変化するアプリケーションが多くあるので、使用に注意が必要です)。
OKをクリックする前に、「名前を付けて保存 ahk_class #32770 ahk_exe notepad.exe」をコピーしておきましょう。コピーしたら、OKボタンをクリックして編集ダイアログを閉じます。
念のために、名前を付けて保存ダイアログをアクティブにする
「名前を付けて保存」ダイアログが表示されたら、通常、それがアクティブになります。しかし、ここではWinActiveの復習も兼ねてアクティブにしていきましょう。
Pulover’s Macro Windowで、WinWaitの次にあるMoveを選択します。そこでF6キーを押して、またウィンドウコマンドを新規作成するために、編集ダイアログを表示します。
コマンドを「WinActivate」に設定し、ウィンドウを指定するテキストボックスには、さきほどコピーしてきた文字列をペーストしましょう。もし、コピーするのを忘れていたら、戻ってコピーしてもいいですし、「…」ボタンから選択してもいいです。
ファイル名をつけるキー操作と、「名前を付けて保存」
名前を付けて保存するためには、ファイル名をつける必要と、「名前を付けて保存」ダイアログを表示する必要がありますね。
「名前を付けて保存」ダイアログには、いくつか呼び出す方法がありますが、どれが一番いいでしょうか? 第2回のPulover’s Macro Creator によるRPAのキーボード操作編でやった通り、失敗しにくいのはキーボードによる操作でした。
ここでは、復習も兼ねて、自分でCtrl + Shift + Sで名前を付けて保存ダイアログを呼び出し、「test」と名前を付けて保存するRPAを、コマンド/アクションを記録ではなく、自分で挿入する形で自作してみましょう。
なお、ファイル名の決定はEnterキーを押すのが便利ですよ。
参考:AutoHotKey 日本語Wiki の Send / SendRaw / SendEvent / SendInput / SendPlay ページ
答えの参考例(筆者の場合)
筆者の場合、追加したコマンド / アクションを紹介します。 RPA に限らず、プログラムは正解が一つでないこともあるので、これと同じでなくても動作していれば大丈夫ですよ(速さや効率、安定性といった要素はありますが、それは追々で大丈夫です)。
- 「名前を付けて保存」ダイアログを待つWinWaitアクションの上で、「テキスト」を呼び出し、「^+s」と入力。アクションのタイプはSend(コマンドを記述したテキスト)。
- メモ帳のウィンドウを動かすために、マウスカーソルを動かすMoveアクションの上で、「テキスト」を呼び出し「test{Enter}」と入力。アクションのタイプはSend(コマンドを記述したテキスト)。
これだけです。コマンド / アクションのリストは以下のようになりました。
2回目、3回目となると、「test.txt」ファイルの上書き確認で動作しなくなってしまいます……。これに対応するのはちょっと大変なので、今回は毎回、test.txtは消して実験してみてくださいね。
実践的な RPA ではこれも便利「ウィンドウがアクティブになるのを待つ」
さて、「test.txt」を毎回消しても、名前を付けて保存した後の、メモ帳のウィンドウをドラッグする操作は通常の環境では動作しないと思います。
なぜかというと、「名前を付けて保存」ダイアログが消える前(ファイルの保存が完了する前)に、ドラッグを開始してしまっているからです。この対応は、正直、実務では直前の「Send」に遅延(遅らせる)を設定して、1秒程度ディレイをかけるのでも、問題ないことが多いです。
しかし、自信をもって「 RPA を自作できる」というために、ちゃんとしたコマンドを利用しましょう。それが「WinWaitActivate」です。
以下の手順に進む前に、メモ帳を一度閉じて再起動しておいてください。
- RPA で実行するアクション / コマンドの一覧が表示されたパネルから、Moveを選択し、ウィンドウ(F6)をクリックしてウィンドウ編集ダイアログを表示します。
- コマンドから、WinWaitActiveを選択します
- タイムアウトはこれまで通り10秒
- WinTitle ボタンをクリックして、Titleからチェックを外します。
- 「…」ボタンをクリックして、PMCを選択モードにしてから、起動しておいたメモ帳の上で右クリックします。
上図のようになっていたら、成功なのでOKボタンをクリックしてから今作った RPA を実行してみましょう。
本当に動いているか、疑いたくなるくらいの速さで次々と操作が実行されたと思います。気持ちよかったですか? これが気持ちいいと思える人は、 RPA 作り、プログラミングに向いているタイプです。楽しんでやっていけます。
そんなに気持ちよくなかった人も大丈夫です。自分で苦労してロジックを考えてそれが上手くいったときは、きっと気持ちよくなれます。
話が逸れました。
今回追加したWinWaitActiveは、その名の通り、指定したウィンドウがアクティブになるのを待ちます。「WinActive」コマンドを発行してもすぐにはアクティブにならないのが予想される場合や、絶対にアクティブにならない場合によく用いられます。今回のように、親ウィンドウを操作させないタイプのダイアログを表示したときですね。ちなみに、こういったダイアログのことを「モーダルダイアログ」と言います。さっと出てくるとプロっぽいですし、特に RPA を自作する上では意識することがあるので、覚えておくといいでしょう。
動作については、やはり余裕を見た遅延/遅らせる/ディレイの設定よりもかなりキビキビと動作するので、完全に自動で動き続けるタイプの RPA より、人間の操作をアシストするタイプの RPA (ショートカット拡張やマクロというべきかもしれませんが)で重宝されます。全自動だと、少々の遅れは気にならず、むしろ、目で見てちゃんと動いている安心感が必要な場合があるので。
そして、WinTitle ボタンから、Title を外したのは、名前を付けて保存前後で、ウィンドウのタイトルが変わってしまうからです。
このように、編集しているファイル名になってしまうのですね(開いたばかりの時は、「無題 – メモ帳」)。そのため、こういったアプリケーションではウィンドウタイトルを特定のために用いるのは、すこし、難易度が高くなります。
おわりに
「ウィンドウ」編集ダイアログの中のコマンド(アクション各種)は非常に数が多いです。初めてドロップダウンリストを開いたときに「うわっ、やだな」と思ったかもしれません。
ただ、実はそんなに面倒ではなくて、ウィンドウのタイトルやクラス、IDなどを使って、ウィンドウを操作したり、ウィンドウを待ったりするだけなんですね。もう一つ、ウィンドウの情報を取得するという操作もあります。
とはいえ、一番厄介なのが、「ウィンドウのタイトルやクラス、ID」です。Pulover’s Macro Creatorでは、それを簡単に調べて、しかもコマンドに落とし込めるのでAutoHotKeyのスクリプトをじゃんじゃん書けるよ! という方でも、この周辺だけはPMCを使った方が楽なんじゃないでしょうか。というくらい、本当に便利な機能を搭載しています。
そんな便利な機能の恩恵を享受しつつ、今回までの内容で「あれ、意外に業務に役立つのを作るのって簡単かも?」って思えるくらいにはなってきたと思います。
「いや、もっとうちの業務に役立つ情報を!」という方もいらっしゃるかとは思います。しかし、いきなり実践的な内容になると、色々なことをすっ飛ばしていかないといけないので、少しずつ慣れていきましょう。
2件のフィードバック