はじめに

すべての作業をRPAで自動化しようとするとたぶん破綻する。ExcelやIEなどのソフトウェア側の設定で可能なことはソフトウェアに任せたほうがいい。文字列の結合をRPAでやるより、Excelの関数を使って予め整形しておいたほうが楽だし、RPAにログインID/PWを入力させるより、ブラウザにキャッシュさせておくほうが楽だ。

操作記録モードだけだと、かゆいところに手が届くシナリオが作れないので、「コマンドプロンプト」実行アクションとNTTATが用意している「ライブラリ」で補完するといい感じなるだろう。

環境

WinActor ver4.x(現在の最新版はver5.0)

実装した全自動フローチャート

WinActorに関心のある人は、このページを見ることで何ができるのかの大凡をつかめるはず。以下、わたしが実装したフローチャート。

  1. WinActorを定時に起動する。
  2. 受注データ(Excelファイル)を自動で読み込む。
  3. 受注データ(Excelファイル)をWEBアプリケーションに入力する。
  4. 顧客にユーザ情報登録完了メールを、ユーザごとに本文の内容を変えてメール送信する。
  5. 担当者に作業完了メールを送信する。
  6. 登録済の受注データのファイル名に日付を付加して、別のフォルダに保存する。

上記フローチャートの基本的動作はドキュメントをみれば実装できる。以下、わたしがハマった部分についての備忘録だ。

シナリオの定時実行

たとえば毎日15時にWinActorのあるシナリオを実行することを定時実行とよぶが、WinActor自身に定時実行機能はないので、Windows標準のタスクスケジューラを利用する。WinActorは起動ショートカットごとに読み込むシナリオファイルと読み込むデータファイル(Excelファイルなど)を指定できるので、タスクスケジューラはこの起動ショートカットを実行することになる。

しかし、起動ショートカットに設定した読み込みデータファイル(Excelファイルなど)が存在しない場合、WinActorは起動に失敗する。これは、データファイルの有る無しを条件に、全体シナリオを実行したいときに大きな問題になるが対処法はある。タスクスケジューラから起動ショートカットを直接実行せずに、以下のようなバッチファイルを間に挟む。

hoge.bat
if exist 読み込みたいデータのファイルパス start WinActor起動ショートカットのファイルパス
exit

タスクスケジューラ→バッチファイル→WinActorの順にすることで「データが無い場合はシナリオを実行しない」ことが可能になる。

また、タスクスケジューラの新規作成ウィザートからWinActorの起動ショートカットを設定するとなぜかWinActorの本体プログラムが登録されてしまうので、わたしの環境では以下のようにバッチファイルからすべての起動ショートカットを実行させている。

hoge.bat
start WinActor起動ショートカットのファイルパス
exit

データの整形

WinActorに読み込ませるデータは事前に整形しておいたほうがいい。データの整形とは、2つの文字をくっつけたり、翌年の同日の日付を取得するといった具合だ。

「空白セル」と「未入力セル」は別物である

データの整形はWinActorでもできるが、使い慣れてるExcelに任せたほうが万人にとって楽だろう。ただし、Excelで整形したデータをWinActorにインポートするときに大きな壁にぶち当たる。Excelの関数が入力されているセルは見た目には「空白セル」に見えても「未入力セル」にはならないので、そのままだと空白データとしてWinActorに読み込まれてしまう。従って、余計な空白行はすべて削除しなければならない。この作業は、WinActorのExcel操作ライブラリ(最終行を調べるやつと行を指定回数連続で削除するやつ)を使うことで実現できる。

条件分岐

そもそもファイルが存在しない場合はデータ整形は不要だ。ファイルの存在有無によってフローチャートを分岐すればいいが、変数に格納した値は大文字と小文字が区別されるので、値が「True」なら、「True」とし「true」としないことだけ気をつける。

データの読み込み

起動ショートカットを利用した起動時のみ、自動でデータの読み込みができる。

ウェブアプリケーションのログイン

ログイン処理はWinActorで行わずに、IE(Windows)に認証情報を保存しておくとフローチャートがシンプルかつ安全になる。

Basic認証

Basic認証の操作がうまく実行されないことが有るので、Basic認証はURLで実行できるようにWindowsのレジストリを変更および登録しておく。現在のIEでは、Basic認証をURLで実行することが無効化されているので、レジストリをイジってhttp://user:password@www.hoge.com/でアクセスできるように有効化する。

なお、アクセスするURLのBasic認証のパスワードに#などの特殊文字が入っているとIEがホスト名を認識できないことに注意する。

(参考)英語サイトだけど大丈夫
- Selenium: Allow Basic Auth in IE11

保護モードの解除

保護モードがオンになっていると正しく記録できないことがあるのでオフにしておくこと。

Outlookの終了(複数ウィンドウを強制終了)

わたしはOutlookの挙動がよくわからない(えっへん
シナリオ終了時はOutlookは終了させておきたいので以下のフローを組み込む。

  • [ ノード ] コマンドプロンプト
  • [ プロパティ ]
    • コマンド→cmd.exe
    • オプション→/c taskkill /im outlook.exe /F

Outlook側の設定

Outlookの起動時間短縮措置

そのほかヒント

「ループの最初で分岐」と「ループの最後で分岐」

WinActorは起動時に読み込んだデータの個数分(Ecxelでいうところの行数)だけフローチャートを繰り返す。しかし、WEBアプリケーションへのログオンなどの処理はデータの個数と関係がないの繰り返したくない場合が当然ある。「ループの最初で分岐」と「ループの最後で分岐」を使うことで繰り返し処理の最初と最後に1度だけ行う処理を実装できる。

Excelの自動保存をオフにする

余計な要素を排除するため。

Excelの保護ビューを解除する

余計な要素を排除するため。
Excel:保護されたビューを解除(無効)するには

GmailメールアドレスをOutlookに設定する場合

Googleの厳格なセキュリティポリシーにより(?)、GoogleにキックされてGmailメールアドレスをOutlookに設定できないケースがある。以下の2つの対処方法が有る。

ノードは正常に実行されてるのにシナリオ終了時にエラーが出る場合

ライブラリの「WinActor終了」を使って強制終了させる。

シナリオファイルや読み込みデータファイルの置き場所

Googleドライブのファイルストリームを使うといい感じだった。WinActorはローカルファイルとして処理できるうえ、人間がファイルを編集するときはクラウド上でやれる。G suite(旧Google Apps)を導入していて、法人用Dropboxを使ってない企業に特におすすめ。なお、G suiteのBasicプランでは、「チームドライブ」機能が使えないが、「マイドライブ」内のファイルを「共有」することで「チームドライブ」と同等の機能が実現できる。

Excelをcsvに変換すると数値セルに謎の空白が入る

Excelの仕様で、数字の後ろの自動的に謎の空白が入る。セルの定義>ユーザー定義から、「0」に設定することで謎の空白が消える。

トライアル版からシナリオを引き継ぐ

シナリオファイルの再保存ではなぜか出来なかったので、WinActor正式版で新規シナリオを作ってから、シナリオファイルのインポートをすることで、シナリオファイルの試用期限を解除できる。

PCのロック中にタスクスケジューラからシナリオを定期実行する場合

ロック中だとIEを含むエクスプローラー系のウィンドウをWinActorが正しく認識できないので、エラーが発生する。ただしロック中でも、他のPCからRDP(リモートデスクトップ)で接続している場合はその限りではない。(詳しくは自分で検証してください)

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.