WinActorシナリオ作成の基礎:Excelに入力済みの経路から交通費をネット検索、結果をファイルに自動入力する
今回はRPAツール「WinActor」を使った交通費精算のシナリオを紹介します。
1つの処理を作成する時に何パターンもの実現方法があり、どのようにシナリオを作ればいいか悩んでいる担当者もいると思います。本記事がシナリオを作成する際の参考になれば幸いです。
目次
シナリオの流れ
シナリオはフローチャートの形式で作成するため、事前に自動化したい処理の手順を整理しましょう。
今回ご紹介するシナリオは、交通費精算のExcelファイルに記入された経路をYahoo!路線情報で検索し、交通費をExcelファイルに自動入力させるシナリオとなります。
以下の順番でシナリオを作成します。
- Yahoo!路線情報を開く
- Excelファイル(旅費交通費精算書)の出発駅、経由駅、到着駅をコピーする
- Yahoo!路線情報の出発駅、経由駅、到着駅を入力して検索する
- 検索されたルート1の料金をコピーする
- 旅費交通費精算書に料金を貼り付ける
- 2~5の処理を繰り返す
- Yahoo!路線情報、旅費交通費精算書を閉じる
- エラー発生時の処理
手順1:Yahoo!路線情報を開く
旅費交通費精算書に料金を入力するためにまずはYahoo!路線情報を開く処理を作成します。
自動記録でYahoo!路線情報を開く
メイン画面のターゲットボタンを押下し、Yahoo!路線情報を選択します。
記録モードが「Chrome」になっていることを確認したら自動記録を開始します。
「Chrome」モードで画面を操作すると処理内容を記録し、自動でシナリオの部品が作成されます。検索を押下すると以下の部品が作成されます。
自動記録したノードを編集する
後ほどのシナリオ作成で駅名を入力して検索するため、「クリック(chrome)」を削除します。
また、シナリオを見返す時に作成した部品がどのような処理をしているのかわかりやすくするために「chromeページ表示」の名前を「Yahoo!路線情報を開く」に変更します。
※本記事に添付されている画面は上記の記述がない場合でもタイトル名を変更しています。
画像最大化のノードを追加する
今回はノード「画像マッチング」も利用するため、エミュレーションモードを利用して画面最大化の処理を登録します。
画面最大化により、常に同じ画面サイズで処理が行われるため、エラーが起きる可能性を下げます。
※操作記録リストに過不足がある場合、プロパティから操作内容を編集することができます。
「1.Yahoo!路線情報を開く」時点でのシナリオは以下となります。
手順2:Excelファイル(旅費交通費精算書)の出発駅、経由駅、到着駅をコピーする
Yahoo!路線情報で駅名を検索するために旅費交通費精算書に記載されている出発駅、経由駅、到着駅を変数に格納する処理を作成します。
変数を登録する
駅名検索をするためにまずは出発駅、経由駅、到着駅を格納する変数を作成します。変数一覧から追加(黄色背景の+)を押下し、変数を登録します。(変数名:交通費申請ファイル/行数/出発駅/経由駅/到着駅)
変数に値を格納する
変数の登録後、ライブラリ「18_Excel関連」の12_書式にある「Excel操作(値の取得2)」で旅費交通費精算書の出発駅、経由駅、到着駅を変数に格納します。
※上図は出発駅の設定となります。経由駅、到着駅も各項目を設定します。
「2.Excelファイル(旅費交通費精算書)の出発駅、経由駅、到着駅をコピーする」時点でのシナリオは以下となります。
手順3:Yahoo!路線情報の出発駅、経由駅、到着駅を入力して検索する
各変数に格納した駅名をYahoo!路線情報に入力し、交通費の検索を行う処理を作成します。
自動記録で駅名を入力し、検索する
「1.Yahoo!路線情報を開く」と同様にWinActorの「記録対象アプリケーション選択」でYahoo!路線情報を選択します。
記録モードが「Chrome」になっていることを確認したら記録を開始します。
出発駅、経由駅、到着駅に任意の駅名を入力し、検索ボタンを押下すると以下のノードが作成されます。
自動記録したノードを編集する
「chrome起動」「chromeページ表示」のノードは「1.Yahoo!路線情報を開く」で既に作成したため、削除します。
「文字列設定(chrome)」の「設定する値」には自動記録の際に入力した文字列が記録されているため、それぞれの変数に変更します。
※上図は出発駅の設定となります。経由駅、到着駅も同様に「設定する値」を変数に変更します。
「3.Yahoo!路線情報の出発駅、経由駅、到着駅を入力して検索する」時点でのシナリオは以下となります。
手順4:検索されたルート1の料金をコピーする
検索された料金をコピーし、変数に格納する処理を作成します。Yahoo!路線情報では複数のパターンが表示されるため、今回はルート1をコピーします。
変数を登録する
料金を旅費交通費精算書に貼り付けるためにまずは料金を格納する変数を作成します。変数一覧から変数を追加します。(変数名:ルート/料金)
料金をコピーする
料金をコピーする手順は以下となります。
①ドラッグ開始位置の指定
ノード「画像マッチング」を利用してドラッグの開始位置を指定します。
ウィンドウズ識別名の右にあるターゲットボタンで料金の検索結果画面を対象に選択します。
「↓ルート1」をマッチング対象(赤枠)とし、画像があった場合は指定の場所(青色の+)にマウスカーソルを合わせます。(アクション:マウス移動のみ)
②ドラッグ終了位置の指定
①とは別に「画像マッチング」を利用し、ドラッグの終了位置を指定します。
こちらも①と同様に対象画面を料金の検索結果画面、マッチング対象を「↓ルート1」とし、画像があった場合は指定の場所までドラッグします。(アクション:左クリックし、マッチング箇所までドラッグ)
③ドラッグした料金をコピーする
①、②の処理で料金がドラッグされている状態となるため、エミュレーションモードでショートカットキーの入力を記録し、料金をコピーします。
④コピーした値を変数に格納する
ノードの「クリップボード」を利用し、変数「料金」にコピーした料金を格納します。
現時点での「3.Yahoo!路線情報の出発駅、経由駅、到着駅を入力して検索する」のシナリオは以下となります。
「ルート1」が見つからなかった時の処理を登録する
Yahoo!路線情報では遅延や運休などがある場合は料金の検索結果画面の上部にそのお知らせが表示されます。遅延、運休のお知らせが表示されることにより、「ルート1」が画面から見切れてしまうとシナリオが実行されずにエラーとなります。
エラーを回避するために「ルート1」が見つからなかった場合は画面下部にスクロールする処理を作成します。
①無限ループを設定する
ノード「繰り返し」を利用します。プロパティの「条件式設定」を開き、条件を設定しないまま「OK」ボタンを押下して条件式を設定します。これにより無限ループが設定されます。
②「ルート1」の検索結果を変数に格納する
ノード「画像マッチング」を利用します。マッチング対象を「↓ルート1」とし、画像の取得結果を変数「ルート」に格納します。(アクション:状態チェック/状態取得結果:ルート)
ルート1が見つかった場合は「true」、見つからなかった場合は「false」が変数「ルート」に格納されます。
③分岐条件を設定する
ノード「分岐」を利用して変数「ルート」の値が「true」の場合と「false」の場合に行われる処理を登録します。
「条件式設定」から判定が真となる条件を設定します。今回は変数「ルート」が「true」の場合は真の処理(ルート1が見つかった場合の処理)、「false」の場合は偽の処理(ルート1が見つからなかった場合の処理)となります。
ルート1が見つかった場合は繰り返し処理を終了します。ノードの繰り返し終了をtrueの処理に設定します。
ルート1が見つからなかった場合はライブラリ「12_マウス関連」にある「マウスホイール操作」でマウスホイールを手前方向に5回転行う処理を設定します。
また、マウスホイールを行うために検索結果画面を左クリックするためにノード「画像マッチング」を登録します。
分岐条件のシナリオは以下となります。
「4.ルート1の料金をコピーする」時点でのシナリオは以下となります。
手順5:旅費交通費精算書に料金を貼り付ける
変数に格納された料金を交通費精算書へ貼り付ける処理を作成します。
変数を登録する
往復か片道かを判断するための変数を作成します。変数一覧から変数を追加します。(変数名:往復or片道)
料金から不要な文字を削除する
往復の場合は旅費交通費精算書に料金を貼り付ける前に金額を2倍にする処理を行います。ノード「四則演算」を利用しますが、コンマと円が変数に格納されている場合はエラーとなります。四則演算を行う前に「07_文字列操作」の01_変換・整形の「文字列置換」でコンマと円を削除します。
往復の場合に金額を2倍にする
「07_文字列操作」の01_変換・整形の「文字列置換」により料金がノード「四則演算」に利用できる状態となりました。続いては往復の場合、金額を2倍にする処理を作成します。
①旅費交通費精算書から「往復」「片道」を取得する
ライブラリ「18_Excel関連」の12_書式にある「Excel操作(値の取得2)」を利用して交通費精算書に記載されている往復、片道を変数「往復or片道」に格納します。
②往復、片道それぞれの処理を登録する
ノード「分岐」を利用して往復、片道それぞれで行われる処理を設定します。
「条件式設定」から判定が真となる条件を設定します。今回は変数「往復or片道」が往復と等しい場合は真の処理、それ以外の場合は偽の処理となります。
往復の場合はノード「四則演算」を利用し、料金を2倍にする処理を設定します。
片道の場合は何も処理を行わずに次の処理を行います。
③旅費交通費精算書に料金を貼り付ける
ライブラリ「18_Excel関連」の12_書式にある「Excel操作(値の設定2)」を利用して料金を交通費精算書に貼り付けます。
「5.旅費交通費精算書に料金を貼り付ける」時点でのシナリオは以下となります。
手順6:2~5の処理を繰り返す
「2.Excelファイル(旅費交通費精算書)の出発駅、経由駅、到着駅をコピーする」から「5.旅費交通費精算書に料金を貼り付ける」で1行分の経路検索を行い、料金を旅費交通費精算書に記入するという処理が完了しました。
続いては旅費交通費精算書に記入されているデータの数だけ2~5を繰り返す処理を作成します。
変数を登録する
データの有無を判断するための変数を作成します。変数一覧から変数を追加します。(変数名:No.)
無限ループを設定する
ノード「繰り返し」を利用して無限ループを設定します。
繰り返し処理の対象となるのは「Yahoo!路線情報を開く」から「料金の貼り付け」までとなります。
無限ループの終了条件を設定する
データが無くなるまで処理を実行するシナリオとするため、旅費交通費精算書のNo.列の値がブランクになるまで処理を繰り返すように設定をします。
①No.を取得する
ライブラリ「18_Excel関連」の12_書式にある「Excel操作(値の取得2)」で旅費交通費精算書のNo.を変数に格納します。
②分岐の条件を設定する
ノード「分岐」で変数「No.」に値がある場合とブランクの場合に行われる処理を登録します。
「条件式設定」から判定が真となる条件を設定します。今回は変数「No.」がブランクではない場合は真の処理(処理するデータがある場合)、ブランクの場合は偽の処理(処理するデータがない場合)となります。
真の処理に2~5で作成したシナリオを設定します。
偽の処理にノード「繰り返し終了」を設定します。
③変数「No.」の値に1を加算する
真の処理にノード「カウントアップ」を設定し、変数「No.」の値に1を加算させます。
変数「No.」が加算することで旅費交通費精算書の次の行の処理が行われます。
「6.2~5の処理を繰り返す」時点でのシナリオは以下となります。
手順7:Yahoo!路線情報、旅費交通費精算書を閉じる
これまでの処理で旅費交通費精算書に記載されている情報の全てを経路検索し、料金を旅費交通費精算書に貼り付けされている状態となります。
続いてYahoo!路線情報を閉じ、旅費交通費精算書は上書き保存後に閉じる処理を作成します。
変数を登録する
旅費交通費精算書を保存して閉じる際に保存結果を格納する変数が必要となるため、変数を作成します。変数一覧から変数を追加します。(変数名:実行結果)
Yahoo!路線情報を閉じる
ライブラリ「23_ブラウザ関連」の「ブラウザクローズ」を利用してYahoo!路線情報を閉じます。
ブラウザ名には「chrome起動」記載されている「browser_chrome」を設定します。
交通費精算書を保存して閉じる
ライブラリ「18_Excel関連」の01_ファイル操作の「Excel操作(上書き保存)」を利用して保存後に旅費交通費精算書を閉じるように設定します。
「7.Yahoo!路線情報、旅費交通費精算書を閉じる」時点でのシナリオは以下となります。
手順8:エラー発生時の処理
最後にノード「例外処理」を追加し、2~7までの処理中に不測の事態が起きた場合の処理を登録します。
ノード「例外処理」は正常系の処理中にエラーが起きた場合に異常系の処理に切り替えるため、エラーが発生した場合の対処を登録するノードになります。
異常系には以下の処理を登録します。
①指定時間待機
ノード「指定時間待機」を設定します。指定された時間が経過したら次の処理を行います。今回は10秒待機した後に次の処理を行うように設定しています。
②Yahoo!路線情報の終了
「7.Yahoo!路線情報、旅費交通費精算書を閉じる」の「Yahoo!路線情報を閉じる」と同様にライブラリ「23_ブラウザ関連」の「ブラウザクローズ」を利用してYahoo!路線情報を閉じます。
③エラーメッセージを表示する
ノード「待機ボックス」で利用者にエラーが発生していることを表示させます。
「8.エラー発生時の処理」まで含めたシナリオは以下となります。
※繰り返しグループ内のシナリオは以下となります。
参考までにシナリオ実行時の動画を掲載します。
まとめ
WinActorで交通費精算を行うシナリオの一例は以上です。
RPAツール「WinActor」では利用できるノードやライブラリが多くあり、自動記録・ノード・ライブラリの組み合わせ次第では1つの処理でも様々な実現方法があります。自分が知らないだけで便利なライブラリも多くあると思います。シナリオ作成で悩む時は 特集「WinActorシナリオ作成の基礎」 やWinActorのユーザーフォーラム(URL: https://winactor.com/questions/)などを参考にするとシナリオ作成のヒントが見つかるかもしれません。
筆者プロフィール
- 仕事終わりにバーベルを挙げるのを楽しみにしている営業職。
スクワットベスト230㎏。必殺技は右肘のプレスアウト。
業務の自動化を実現する「WinActor」
製品サイトではWinActorのシナリオを実行した動画などを数多くご紹介しています。ぜひご覧ください。