Help us understand the problem. What is going on with this article?

【UiPath】交通費検索ロボットを作ってみる

More than 1 year has passed since last update.

UiPathアカデミーを一通り終えたけど、実践的なロボットの作り方がわからない。。。
という人のために、今回は交通費をExcelに記入するロボットの作り方をまとめてみました。

※↓のサイトをベースにしています。大変参考になりました。
UiPath×Excel。Excelデータを読み取り、ブラウザで交通費検索。無料で使えるRPAツール。

本記事の狙いは、上記処理を行うロボットを作る過程で、開発に必要と思われるスキルを習得することです。
具体的には、

  • 変数(関数を用いた値変換の方法など)
  • セレクタ
  • データテーブル ←後日追記予定
  • ブラウザ操作
  • Excel操作
  • 例外処理 ←後日追記予定
  • Orchestratorとの連携

のあたりを押さえておけば、あとはガシガシ作りこんでいく中で覚えていくと思います。

概要

交通費の算出には「Yahoo!路線情報」を使います。
以下、今回作るロボットの操作概要です。

1. 交通費算出に使うExcelファイルを開く
出発/到着駅が記入されたExcelファイルを開きます。
image.png

ファイルの内容です。
ここから各行の出発/到着駅を取得し、それぞれの交通費を「金額」列に記入していきます。
image.png

2. IEでYahoo!路線情報にアクセス
image.png

3. 出発/到着駅を入力
ここからは、操作1で取得した出発/到着駅リストから1行ずつ取得して、出発/到着駅を入力し、検索ボタンをクリックします。
Yahoo!路線情報の仕様で、デフォルトで最短時間で到着する経路を優先して検索するようになっているので、今回はその設定で検索するようにします。
image.png

4. ルート1の料金を取得し、Excelファイルに貼り付ける
最上位に表示されているルート=最短時間で到着する経路となるはずなので、ルート1の経路での料金を取得します。その料金をExcelファイルに貼り付けます。
その後、画面上部の「路線情報トップ」リンクをクリックし、検索画面に戻ります。
以降、出発/到着駅リストの行数分、操作3~4を繰り返します。
image.png

5. IEを閉じる
交通費記入が完了したので、IEを閉じます。

6. 処理結果
Excelの「金額」列に各区間の料金が転記されています。
image.png

動作イメージ

こんな感じで動きます。
sample.gif

開発のポイント

変数の値変換

今回はあまり複雑な値変換は不要ですが、実装の余地がある箇所としては、Excelに貼り付ける料金の表示です。
画面に表示された料金をそのまま取得すると「310円」のようになりますが、
語尾に「円」とつけずに「¥1,000」といったフォーマットで貼り付けたいとします。
もっと綺麗に整形できるかもしれませんが、以下一例です。

"¥" + Integer.Parse(変数.toStirng.Replace("円","")).ToString("#,0")

値変換の関数については、VB.NETの関数の知識が多少必要になります。
ただしUiPathは優秀で、インテリセンス機能(候補メソッドを表示してくれる機能)がついているので、
メソッドを探すのにそれほど苦労はしないはずです。
ちなみに2018/10/09現在、Blueprismにはインテリセンスは搭載されておらず、
コードステージでコーディングする際はメモ帳にコードを書くような感覚でコーディングしてました。。。

image.png

Invoke Work Flowで処理を切り分ける

UiPathの場合、実装したワークフローがやたらと入れ子の多い見た目になり、見づらい場面が多々出てくると思います。
なるべく1ワークフローの長さは短く、細かくワークフローを分けたほうが見やすいと思います。
また、共通して使えそうなフローは積極的に部品化していきましょう。
image.png

セレクタをガチガチに設定しすぎない

例えば、路線検索結果ページの画面にアタッチする場合、セレクタの設定が悪いとアタッチできません。
セレクタの「title」が「お台場海浜公園」から「新橋」への乗換案内で設定されていた場合、新宿から秋葉原の検索結果画面をアタッチすることはできません。
このような場合、*でどの路線検索結果でも画面がアタッチできるようにパラメータを変えてあげる必要があります。
同じ画面を使いまわすロボットを作るときなど、セレクタの設定値はある程度汎用的に設定するべきです。

セレクタについての分かりやすい説明はこちら↓
https://uipath.site/use-uipath/selector.html

image.png

ログはこまめに吐く

将来、管理サーバーでロボット端末を集中管理するようになると、Orchestratorのログを見る機会が増えると思います。
特に障害が発生した場合、ログが細かく吐かれるように実装していれば、どこまで処理が動いてどこでつまづいたかが特定しやすくなります。
ログを吐く処理を入れること自体は全く難しくないので、後々の運用のことを考慮してこまめに入れるようにしましょう。
image.png

画面の細かい挙動を吸収する

今回の場合、出発/到着駅を入力した後、候補駅リストがピロ~ンと表示されると思います。
image.png

例えば、このリスト表示が検索ボタン押下の処理を妨げる可能性があります。
このような、後処理に影響しそうな不要な動作は、キャンセルするように実装してあげたほうが
安定して稼働します。
今回だと、出発/到着駅を入力後、入力欄を一度クリックする処理を挟む、とかですね。

Orchestratorで動かす

↓を参考にして、本記事で作成したプロジェクトをOrchestratorで動作させます。
【UiPath】Orchestratorことはじめ

サンプル

本記事で作成したロボットのプロジェクト一式をgithubにアップしています。
一部、Excelファイルのパスをマスクしてます。
https://github.com/kktrip/UiPath

irohamaru
大手メーカー系SIer、ITベンチャー、外資系コンサルティングファームで 業務系システム、ECサイト開発を経験。 現在、RPAを主とした業務効率化の提案を行うBPRコンサルタント、 設計・開発・運用保守を一貫対応するRPAエンジニアとして活動中。 BluePrism,UiPath,WinActor開発実績有。 大手広告代理店、損保、銀行、金融系企業の大~小規模RPA導入支援実績有。
https://www.irohamaru-works.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした