RPA やプログラムを作っているとき、予定している成果物が自分で作れるイメージが湧かずに、手が止まってしまうことはありませんか? そういうとき、複数人でのプロジェクトの場合、仕様書を作成し、機能を分割して整理します。
この手法はもちろん、個人の開発でも有効ですが、事前の設計をしようとすると、やっぱり億劫になってしまう、なんてこともあります。
そんなときどうするか? とりあえず作り始めてみて「後のことは後で考える」、というのもひとつの手段です。
- Pulover’s Macro Creator で、実際に「役に立つ」RPAの事例を知りたい人
- Pulover’s Macro Creator のコマンド、アクションの使い分けが知りたい人
- Pulover’s Macro Creator で RPA を作る際に、どういったことを考えるといいのか知りたい人
- Pulover’s Macro Creator でどんなものが作れるのか知りたい人
初心者向けではないですが、流し読みする分には「RPA づくりってこんな感じなんだ」とイメージできると思います!
PMC で複数のアプリケーションを操作する RPA を作って見る
下準備
似たようなものを作ってみたい方は、LibreOffice と WinSCPをダウンロードして、インストールしてください。
また、実際に動作させるには有効な FTP(SFTP)アカウントが必要です。ただ、WinSCPの出番は最後の最後だけなので、FTPアカウントをお持ちでない方はWinSCPのインストールはしなくても問題ありません。
今回作成する RPA の全体像
- ods, xlsxファイルをLibreOffice で開く
- CSV形式で指定の場所に保存する
- 保存したCSV ファイルを csvjson.com でjson形式に変換してダウンロードする
- ダウンロードしたjsonファイルを、WinSCPで指定のサーバーにアップロードする
これまでより複雑とはいえ、人間が作業しても5~10分程度で終わる作業です。ただ一番面倒くさくて生産性が落ちるタイプでもあります。
それに、これは私の趣味のプロジェクトでたまに発生する作業を楽にするためのものですが、実務ではこういった作業を大量のファイルに対して行う場合もあるので、そうした RPA を作成するイメージも湧くのではないでしょうか。
タブを分ける
今回は、アプリケーションを3つ使います。そうするとテストのための実行も多くなります。チェックボックスからチェックを外すことでそのアクションを実行させないこともできますが、いちいちチェックを外したり入れたりするのも面倒です。
そんなときは、タブを複数開いておいて、ちょうどいい区切りごとにタブを切り替えて、後でひとつにまとめると効率がいいです。
LibreOffice の部分から作って行く
RPA の場合、難しい部分とかを考えずに、頭から順番に作っていくと操作がイメージしやすいです。
ファイルを開いて実行する
開くファイルが決まっている場合、アプリケーションの「開く」メニューからでもいいのですが、手間は少ない方がいいです。そうすると、ダブルクリックで開くのも一つの手段ですが、筆者は普段は Excel を使っているので、単にファイルを開く(関連付けから)だとExcelになってしまいます。
そこで、Run コマンド(実行/ファイル/文字列/その他ボタン{F8キー})を使います。
"C:\Program Files\application.exe" "D:\Documents\your_document.xlsx"
上記のように、「実行ファイル」の後に、開きたいファイルのパスを記述すると、大体のアプリケーションはそのファイルを開いてくれます。ここではそれを利用します。
準備完了を待つ
アプリケーションの起動を待つには、WinWaitアクションを利用します。
ここで注意したいのは、今回はウィンドウタイトルも含めてWinTitleのテキストボックスを埋めていることです。
理由は、
- 開くファイルが決まっているのでタイトルが固定できる
- スプラッシュウィンドウが表示されるので、それと誤認しないため
- LibreOfficeにはcalcの他に、Writerなど様々なアプリケーションが、soffice.binという共通の実行ファイルから実行されるから
です。
名前を付けて保存する
メモ帳で散々やった名前を付けて保存です。 RPA では頻出と言っていいのではないでしょうか(最近のWord, ExcelなどのOffice系だとこの辺りの処理が複雑になっているのが厄介です)。
ここでは、テキスト(F3キー)を押して、^+sを「コマンドを記述したテキスト」で入力します。続いて、WinWaitActiveで名前を付けて保存ダイアログを待ちます。この辺りは、以前の記事にまとめていますので、忘れてしまった方は参照してください。
しかし、これまでと違うのは「ファイルの種類」を変更したい点です。固定座標のクリックでも恐らく問題はないですが、ここでは「コントロール」アクションを活用していきます。
しかし、現代のアプリケーション開発環境ではあまり使われなくなってきており、 RPA の流行の潮流とは真逆の方向になっています(Microsoft がPowerAutomate Desktopを出すことで、もう一度これらの共通アクセス方法が提供されればいいのですが)。
ドロップダウンを表示する
コントロールボタン(F4キー)を押して、コントロールアクションの入力ウィンドウを表示します。
コントロールアクションの編集ダイアログは、ウィンドウアクションのダイアログとよく似ています。
- コマンドからControlを選択
- サブコマンドからShowDropDownを選択(ドロップダウンリストをクリックしたのと同様になります)
- 「コントロール」テキストボックスの「…」ボタンをクリックして、「名前を付けて保存」ダイアログの、「ファイルの種類」ドロップダウンリストを右クリックして選択します。
- WinTitleテキストボックスでは、ウィンドウを指定します。
「コントロール」を選択する場合は、「ウィンドウ」を選択する場合とは違い、完全にそのコントロール(ボタンやテキストボックス、ドロップダウンリスト(コンボボックス))を右クリックしなければいけません。
ドロップダウンを選択する
ドロップダウンリストを表示したら、次はドロップダウンを選択する必要がありますね。同じコントロールに対する操作なので、今作ったドロップダウンを表示するコマンドをコピー&ペーストします。
そして、以下の様に設定します。
- サブコマンドを「ChooseString」
- 値 / オプションに「テキスト CSV」(半角スペースに注意)
とします。
これはその名の通り、「文字列から」オプションを選択するコマンドになります。そして、指定する文字列は前方一致(前の方が合っていたら選択される)となっています。
今回はCSVファイルにしたいので、「テキスト CSV」としました(他にテキストで始まる項目がないので、「テキスト」だけでも構いません)。
ドロップダウンリストを閉じる
同じく、ドロップダウンリストを開くアクションをコピー&ペーストし、サブコマンドを「HideDropDown」に変更します。
コントロールコマンドでテキストを設定する
続いてファイル名を指定します。通常通り、テキストアクションを使用してもいいのですが、今回はコントロールアクションから設定していきます。ドロップダウンリストを閉じるアクションをコピーしてもいいですし、新規にコントロールアクションを追加しても構いません(作りやすい方を選んでください)。
- コマンドをControlSetTextに設定
- 値 / オプションに保存したいファイル名を設定(今回はtest.csv)。
- コントロールの「…」ボタンをクリックして、「名前を付けて保存」ダイアログの、ファイル名を入力するテキストボックスを右クリック(Edit1となる)
- 新規にアクションを追加している場合、WinTitleで「名前を付けて保存」を選択
解説
ControlSetTextは、キーボード操作ではなく文字列をそのまま設定するアクションです。RPA では使用することはあまりありませんが、本来なら変更できない文字列を変える場合などもあります。
保存するフォルダを選択する
保存するフォルダを選択する簡単な方法は、ファイル名を入力するテキストボックスに、「c:\」などのようにフォルダへのパスを入力し、ファイル名は付けないで「Enterキー」を押すことです。
これが簡単かつ確実なのですが、今回は下図のフォルダを選択するボックスにパスを入力してみたいと思います。
以前のWindowsでは、ドロップダウンリストとテキストボックスを組み合わせた標準的なコントロールだったのですが、Windows 10では上図のように、フォルダごとにボタンになり、高機能になっています。一方で、適当にテキストの上をクリックしてもフォルダのパスを直接入力できる状態にはならなくなりました。
丁度赤丸の辺りをクリックすると、ほぼどんな状態でもパスの編集状態となります。しかし、名前を付けて保存ダイアログは、サイズを変更できるダイアログなので、固定座標のクリックは使えません。画像検索でも、クリックしたい場所がほぼ白なので、手がかりとするなら、ドロップダウンを示す下向きの>と、更新ボタンですので、画像の中心をクリックがほぼ使えない状態です。
そこで、画像検索と、「変数の計算」を組み合わせます。
フォルダ入力欄の「右端」を画像検索する
「イメージ / ピクセル / 画像からテキストへ」ボタン(F7キー)を押して、画像検索の編集ダイアログを表示します。
設定は、
- 見つかった場合は「Continue」
- 見つからなかった場合は「Prompt」
- 変形は10
- If文を追加にチェック(上図では撮影の都合で外れています)
とします。検索する画像の設定は、
上図のようにフォルダ選択ダイアログの右側の方をドラッグして選択します。ここをクリックしても仕方がないので、「画像の中心に座標を調整」や、「見つかった場合の左クリック」などは設定しません。
ではどうするかというと、「変数」を使ってちょうどいい辺りをクリックさせます。