UiPath×Excel。Excelデータを読み取り、ブラウザで交通費検索。無料で使えるRPAツール。

  • URLをコピーしました!

UiPath(ユーアイパス)は、無料で使えるRPA(ロボット)ツールです。
これを使って、交通費検索のサンプルをつくる過程を解説します。

UiPath

ひとりしごとのRPAツールの選択肢

ひとりで仕事をしていれば、RPA(Robotic Process Automation。ロボットによる自動化)は強い味方です。
雇わないスタイルを維持でき、時間をつくることができます。
※RPAとはサーバーで稼働するものを指し、ひとり用に1台のPCで使うものは、厳密にはRDA(Robotic Desktop Automation)といいます。

ただ、このRPAツール、高い、高い。

NTTデータの提供するRPA、Winactrorは、年90万円です。

毎年90万円払います。

毎年トライアスロンバイク買うようなもんです。
(おつりがでます)

年に3回ハワイに家族で行けます。
私にはとても出せません。

年90万円ならまだいいほうで、年700万、1000万というものもあります。

あこぎなコンサルティングとセットなものも多く、その周辺ビジネスもさかんです。
が、本当に使いこなせている人はどれくらいいるのかという疑問もあります。

RPA関係の本、セミナー、展示会で独自に取材したところ、ひとりしごとでのRPAツールの選択肢は、

・WinAutomation(買い切りで約11万円)

・UiPath(条件付き無料)

・RPA Express(無料)

です。

今回は、UiPathを取り上げます。
条件付き無料というのは、このコミュニティエディションです。
小規模事業者(年間売上100万ドル以下)なら、無料で使えます。
(無料体験という位置づけでもあります)

EX-IT_02

htps://www.uipath.com/ja/community

毎回、こういった表示が出ますが、「Continue Free」で続けましょう。
EX-IT_01

無料のRPAツールでは、使いやすさは、WinAutomationという印象ですが、WinAutomationでできないことがUiPathでできるものはありました。

それぞれ使いつつ検証中です。

UiPathの導入、インストール

サイトで登録後インストールしましょう。

起動するとメールの設定等があります。

「Continue Free」で次へ

EX-IT_01

ここでは、「Blank」を選びましょう。

EX-IT_03

次にロボット名とフォルダの場所を決めます。

EX-IT_04

UiPathは、1つのフォルダで成り立ち、中身はこんな感じです。
フォルダをつかわない主義の私としては、むむむ……ですが。

アクティビティの追加

UiPathは、左側のActivitiesから、必要なコマンドを真ん中にドラックして組み合わせることでプログラミングできます。

他のプログラミング言語と異なり、敷居が低いのがRPAツールの特徴です。

まず、このアクティビティを追加しておきましょう。
図の赤丸で囲った「Manage Packages」をクリックすると、アクティビティのセットを追加できます。
アプリのようなものです。
ここでは、[Available]をクリックして、検索し、
ex105

UiPath.Excel.Activities
UiPath.Mail.Activities
UiPath.PDF.Activities

を追加しておきましょう。
(UiPath.Core.Activitiesは、最初から入っています)

Favoritesの設定

 

UiPathでは、多くのアクティビティから通常検索して探しますが、アクティビティ名を右クリックして「Add to Favorites」(お気に入りへ追加)をすると使いやすくなります。

EX-IT_07

今回の事例で使う次のアクティビティを追加しておきましょう。

Open Browser
Excel Application Scope
Read Range
Write Cell
Output Datatable
MessageBox

UiPathで交通費検索ロボット

UiPathで交通費検索ロボットをつくってみましょう。

全体の構造

全体の構造を確認すると、

・Excelから出発駅と到着駅を読み取る

・ブラウザ(Yahoo!路線情報)で検索

・Excelでその結果を書き込む
といった流れになります。
このうち、つくる順番としては、まず「ブラウザで検索」部分をつくり、それがそれがうまくいくようになってから、Excel部分をつくります。
ちょっとずつ、かんたんな部分からつくっていくのがプログラミングのコツです。

EX-IT_54

ブラウザを開き、Yahoo!路線案内にアクセス

ブラウザ(インターネットエクスプローラー)を開くのは、「Open Browser」です。
これをドラックして、ボックスに、

“https://transit.yahoo.co.jp”

を貼り付けます。
URLをダブルクォーテーション(“”)で囲まなければいけません。

ex101

ここでロボットを実行してみましょう。
実行は、F5です。
実行して、ブラウザが起動し、Yahoo!路線情報が出てくれば、うまくいったということになります。

EX-IT_20

出発駅、到着駅を入れ検索をクリックし、料金を表示

次にブラウザの操作部分をつくっていきます。
ここは、Webレコーディング(ブラウザでの操作を記録してくれる機能)を使ったほうが楽です。
メニューの[Recording]→[Web]をクリックします。

EX-IT_21

このようなメニューが表示されるので、さらに[Record]をクリックしましょう。
ブラウザの部分部分を選択できるモードに変わります。

106

[出発]のボックスをクリックし、このようなボックスが出てきたら、駅名を入力します。
ここでは「お台場海浜公園」です。
(任意のものでかまいません)

EX-IT_23

同様に、到着のボックスにも、駅名を入力し、さらに[検索」をクリックします。

EX-IT_24

この画面になったら、レコーディングメニューの[Save&EXIT]をクリックし、レコーディングを終了しましょう。
ちょっとずつ記録するのがポイントです。

EX-IT_26

 

UiPathを見ると、このように記録されています。
出発駅は、「INPUT sform」、到着駅は、「INPUT sto」、検索ボタンは「INPUT searchModule~」となっていればOKです。
うまくいかない場合は、Deleteキーで消して記録しなおしたり、移動させたりコピーさせたりすることができます。

EX-IT_25

F5キーで実行してみましょう。
ブラウザが起動し、検索してこの画面になれば成功です。
次はこの表示された料金を読み取ります。

EX-IT_26

ブラウザに表示された料金を読み取る

データの読取は、UiPathで[DataScraping]をクリックします。

ex107

こういったボックスが出ますので、[Next]をクリックして、料金の最初の要素(ルート1)をクリックします。

319円のすぐ左ではなく、ちょっと左で大きめにとれるように選択するのがポイントです。

EX-IT_29

クリックすると、このように「次の要素を選んでください」と出ますので、ルート3の金額をクリックします。

EX-IT_30

この画面は、そのまま[Next]を選びましょう。

EX-IT_31

このように、読み込んだデータが表示されます。
1つだけ読み込むよりもこうやって全体で読み込んだほうが楽です。
[Finish]をクリックすると、

EX-IT_32

このように「次のページにもデータがありますか?」と出るので、[No]を選びましょう。

EX-IT_33

UiPathでは、このように記録されています。
どう読み取ったか確認してみましょう。

EX-IT_34

 

ここで、プログラムを整理しておきましょう。
「検索ボタンをクリック」の下に「データ抽出」がくるように、マウスでドラッグして動かします。

その後に残った、Attach Browerは、削除しましょう。
Attach Browerで最初に検索した経路を記録しまっているので、その後検索したときに不都合なのです。
(一気に記録すればこの問題は起きませんが)

[Extract~」という部分をクリックすると、右側のPropertiesに、ボックスが表示され、[Output]には、[ExtractData]とあります。
これは、読み取ったデータを[ExtractData]という箱に保存しているという意味です。
その保存された[ExtractData]を次の部分で使います。

ex108

つかうのは、[Output Data Table]と[Message box]です。
ドラックしましょう。

ex109

[Output Data Table]は、読み取ったデータを文字列に変えることできます。
(UiPathは文字か数値かで扱いが変わるので変更しなければいけないのです)
[Output Data Table]の右側のPropertiesのINPUTに[ExtractData](「e」を打てば出てくるはずです)を入れ、OUTPUTにどうやって出力するかの名前を指定しなければいけません。

ex110

[ExtractData]はUiPathがつけてくれた名前なのでUiPathも知っています。
ただ、このOUTPUTで人がつける名前をUiPathに知りません。
そのため、登録してUiPathに知らせる必要があります。

「あれをくれ」と言っても、「あれ」がわからなければ人と人の会話も通じません。
「あれ」とは何かをまず伝える必要があります。
同様に、ここで、登録しましょう。
この登録は、OUTPUTの欄で、Ctrl+Kを押し、「Set Name」と出てから入力します。
ここでは、「ExtractOutput」(読み込んだものの出力)と名付けましょう。
いわゆる変数というものです。
Excelマクロでは、「Dim 〇〇」と名付けます。

ex111

こう名付ければ、次の[Message box]で、[ExtractOutput]が使えるのです。

ex112

実行してみると、こういうメッセージボックスが表示されます。
ちゃんと、料金が読み取られていました。

EX-IT_57

 

なお、このメッセージボックスは、確認できればあとはもう必要ありません。
Deleteで消してもいいのですが、該当の[Message box]を右クリックして[Disable Activity]を選択すれば、実行時に無視されます。
ショートカットキーはCtrl+Dです。
Excelマクロでは、「’」(シングルコーテーション)をつけます。

EX-IT_58

このように「Comment out」となります。

EX-IT_59

Excelを開き、出発駅、到着駅を読み取る

ここまでできたら、次のExcelの部分です。
サンプルをこちらからダウンロードできます。
EX-ITサンプル 交通費ロボ.xlsx

EX-IT_54

Excelファイルを開くには、[Excel Application Scope]をつかいます。
ファイル名は、…をクリックすると選択できるようになるので、選択すると確実です。

ex102

そのファイルでやるべきことは、データの読み取り。
ここでは、[Read Range]を使います。
ドラックして、左側のボックスにシート名「”Data”」(ダブルコーテーションが必要)を入れ、右側のボックスに範囲名を入れるのですが、初期設定のまま「””」にしておきます。
この判明が「””」なら、シートにあるデータをすべて読み取ってくれるのです。
これは他の言語やロボットと比べても楽な部分と言えます。

ex103

[Read Range]をクリックして、Propertiesを見てみると、Outputが空白です。
ここでも名前をつけましょう。

EX-IT_37

OutputでCtrl+kを押し、

EX-IT_38

「ExcelTable」と入れます。

EX-IT_39

先ほどと同様に、[Output Datatable]と[MessageBox]を入れて、実行してみましょう。

EX-IT_41

サンプルだとこのように表示されます。

EX-IT_40

先ほどと同様に、[MessageBox]をコメントアウトしておきましょう。

EX-IT_42

さらには変数[ExcelTable]の設定をします。
このままだとロボット全体で使えないからです。
右下の[Variables]をクリックし、[ExcelTable]のScopeを[Sequence]にします。
これでこのロボット全体で、[ExcelTable]を使えるようになるのです。

ex115

読み取った出発駅、到着駅を入れ検索をクリック、料金を読み取る

この読み取ったデータをブラウザに入れる処理を入れます。
UiPathの出発に、「ExcelTable」と入れましょう。

EX-IT_44

さらには、
「ExcelTable(0)(1).tostring」
と入れます。
これは、テーブルからデータを選んで、文字列にする命令です。

EX-IT_45

Excelから読み取ったデータは次のようなもので、プログラムでは通常、0から数えます。
ExcelTable(行)(列)で読み取れますので、ExcelTable(0)(1)は、0行目の1列目、つまり出発駅「お台場海浜公園」なのです。
日付、出発・・・は読み取らないのかと思われるかもしれませんが、これは見出し行で通常読み取りません。
データ行の最初が0になるのです。
同様に、到着駅は、ExcelTable(0)(2)で0行目2列目、新橋となります。

 

 

 

実行してみてこうなればOKです。

 

EX-IT_46

読み取った料金をExcelに書き込む

最後のパート、Excelへの書き込みです。

EX-IT_54

Excel Application Scopeで、ファイルを開き、

EX-IT_47

[Write Cell]で、左側のシート名を「”Data”」、右側のセル名を「”E2″」にします。

ex104

ブラウザから読み取ったデータは、[ExtractDataTable]に出力されていますので、

ex116

書き込む数値は、「ExtractDataTable(0)(0).tostirng」と指定します。

EX-IT_51

こう読み取れており、この場合は見出しを数えないので0行0列目です。

EX-IT_57

実行するとこうなりました。
一見成功ですが、Excel上では、円がついていると文字列になり、計算に使えません。
「319」と入ってほしいものです。

EX-IT_49

UiPathでは、こういったことができます。

「ExtractDataTable(0)(0).tostirng.replace(“円”,””)」
円を空白に置き換えるというプログラムです。
UiPathの特徴としてこういったプログラム(VisualBasic)を使えます。

EX-IT_52

実行すると無事入っていました。
EX-IT_64
完成したら違う駅名を入れてみていただければ。
プログラムを変えれば、複数行の処理もできます。
そうすれば、何万行あってもロボットが楽々やってくれるわけです。

 

Excelのデータを複数行読み取る

では、Excelデータから複数行を読み取って、繰り返し検索し、金額を書き込むようにプログラムを変えてみましょう。

さきほど、[Read Range]で、このように設定していれば、シート「data」のすべてのデータを読み取ってくれます。
複数行になっても、プログラムは変えなくていいのです。

 

 

繰り返し、サイトで検索する

繰り返し部分をつくっていきます。
UiPathで、テーブル(Excel)の繰り返しは、[For Each Row]です。
ドラッグして、「ExcelTable」を指定します。
(rowは最初から入っていますのでそのままで)

その[For Each Row]の中に、これまでつくった、[OpenBrowser]から[WriteCell]までを入れましょう。

 

出発駅、到着駅の部分を、繰り返しに対応するよう、書き換えます。
[For Each Row]の中では、
row(列の見出し).ToStirng
で、その見出しのデータを指定できるのです。

 

こういう見出しなので、
row(”出発”).ToString
row(“到着”).ToString
となります。

 

繰り返し、Excelへ書き込む

書込み部分も繰り返し対応に書き換えます。
最初は、セルE2、次にセルE3、セルE4・・・と書き込んでいくので、E列の2、3,4と1つずつ増やしていけば、繰り返しに対応できると考えましょう。

[Write Cell]の”e2″を次のように書き換えます。
RowNumberは、変数です。

右下の[Valiables]をクリックして、変数を登録し、Default欄に「2」といれます。
これは、2からはじまる、つまりセルE2からはじまるという意味です。

その下に、[Assign]を入れて、次のように入れます。

これはプログラミングでよく出てくる表現です。
RowNumber= RowNumber+1

〇=△で、「〇に△を入れる」なので
RowNumberに、RowNumber+1を入れる
という意味になります。

最初は2なので、

RowNumberにRowNumber(2)+1を入れると、結果的にRowNumberは、3となり、
繰り返すと、次の”e”+RowNumberは、セルE3です。

以降、E4、E5・・と、データの数だけ繰り返してくれます。

 

 

 

なお、WinAutomationはこういった画面です。
見た目は、UiPathのほうがとっつきやすいのですが、WinAutomationのほうが組み立てやすく感じます。
どちらもある程度のプログラミング的考え方は欠かせません。

EX-IT_14

動画もつくってみました。

 

 


【編集後記】
横浜トライアスロンで水中を撮った映像、SDカードが破損していてダメになりました。

復旧を試しましたが、ダメで。

山下公園そばの海、年々きれいになっている気がします。
今年は、結構深いところまで見えました。
昔出たときは、真っ黒で手も見えない時期もありましたし。

成分的にはどうかわかりませんが、

【昨日の1日1新】
※詳細は→「1日1新」

A-Saas体験利用
SDカード復旧ソフト

【昨日の娘日記】

昨日は、「おいしい?」と聞くと、「おいちー」「ちー」と。
カメラを向けるとあまり言ってくれませんでしたが。

  • URLをコピーしました!