UiPathで『電卓アプリ』を操作してみよう! その2

前回の電卓ロボットは単純な足し算しかできませんでしたが、今回はこのロボットをもう少しだけ、賢くしてみましょう。


今回は、UiPath の変数を使ったり、少しプログラマーチックな内容になります。

仕様:


今回は、ちょっと難しくなるので作成するロボットの仕様をちゃんと決めて作りましょう。簡単でも仕様をちゃんとドキュメント化して残しておかないと、しばらく経ってから見直したときにわからなくなったりしますので、ドキュメント化するよう心がけましょう。
さて、今回作成するのは、前回の電卓アプリを拡張する形で作成します。
  • 数値が記述されたテキストファイルを読み込む
  • テキストファイルは1行に1つの数値が記述されているものとする
  • 上から順に全ての数値を読み込む
  • 読み込まれた数値は、電卓アプリを使い加算する
  • 結果を別のテキストファイルに出力する

準備:

プロジェクトをコピー、プロジェクト名を変更する。
まず、前回とは異なる名前でプロジェクトを保存しましょう。UiPath ではプロジェクトのフォルダをまるごと別の名前でコピーすればOKです。前回という名称で保存していると思いますのでそのフォルダをコピーして「Sample001」という名称に変えましょう。
コピーした「Sample001」フォルダの中にある「project.json」ファイルをテキストエディタで開きます。その中の、「"name": "Sample000"」とあるのでコレを「"name": "Sample001"」に変更します。(2018/08時点ではプロジェクト名を変更するにはこの方法しかなさそうです)

ココまでできたら、「Main.xaml」ファイルをダブルクリックして UiPath Studio を立ち上げます。

データファイルを準備する。(数値が記述されたテキストファイルを作成する)
数値を記述したテキストファイルは、「Sample001」の中に作成します。テキストファイルは、1行毎に加算したい数値を記述して、「data,csv」と言う名前で保存します。(csvとした理由は後ほど)

11111
22222
33333
44444
55555
66666
77777
88888
99999
100000
テキストファイルの例

パッケージの追加
今回のプロジェクトでは、上記のファイルをCSV形式のファイルとして扱うため、インストールした状態では入っていないパッケージを UiPath にインストールする必要があります。


Activities ペインの、Manage Packages ボタンをクリックします。
”Manage Packages”ダイアログが開き、現在インストールされている(Installed)パッケージの一覧が表示されます。左側のペインから Available を選択すると、インストール可能な全てのパッケージが表示されますので、”Search in Available”にExcelと入力してください。「Uipath.Excel.Activities」と表示されるので、”Install”ボタンをクリックしてパッケージのインストールを行ってください。



アクティビティの追加:

いくつかのアクティビティを追加して設定することで、さきほどの仕様を実現することができます。今回の追加するアクティビティはすべて Sequence アクティビティの中に追加します。

変数を作る
UiPath でも変数を扱うことができます。今回必要となる変数はテキストファイルを読み込むための変数と、最終的な計算結果を受け取るための変数の2つだけです。
まず、DataTable変数を作成しましょう。UiPath で扱う変数は、ウインドウの下の方にある"Variables"を選択して、変数ペインが開くので Name の所にある"Create Variable"をクリックして変数を追加します。


 DataTable変数の作成
  • Nameに変数の名前を入力 → ココでは"Data"とします。
  • Variable type からDataTableを探して選択する
  • DataTableがメニューにない場合は、一番下の Browser for Types... を選択してType Name に DataTable と入力すると、検索できます。


計算結果を受け取るための変数を 同様に作成します。Answer というで作成します。
 Answer変数の作成
  • Nameに変数の名前を入力 → "Answer"とします。
  • Variable Type(型)は String とします。

Read CSV アクティビティの追加
今回、CSV形式のテキストファイルを処理しますが先程作成した DataTable型の変数「Data」にファイルを読み込ませて処理を行います。変数にCSV形式のファイルを読み込ませるアクティビティとして、 Read CSV アクティビティを電卓アプリを起動する Start process アクティビティの前に追加します。
 設定プロパティ:
  • ファイルパスに" data.csv" を指定("ダブルクォーテーションを忘れずに!)
  • Include Column Names のチェックを外す
  • CSVデータを取得するため、Outputに DataTable変数の Data を指定する
このRead csv で、Dataにcsvの全ての内容が読み込まれます。

Send hotkey アクティビティの追加
電卓の起動直後に、電卓をクリアするため「esc」キーでクリアしたいと思います。このため、 Attach Window アクティビティの中の Do の先頭に Send hotkey アクティビティを追加します。
 設定プロパティ:
  • key に esc を選択

For Each Row アクティビティを追加
前回電卓アプリへのキー入力として利用した Type info アクティビティを削除します。CSV形式のファイルは「Data変数」にRead CSV アクティビティにより読み込まれていますが、それぞれのに対して処理を行う必要があります。
この繰り返し処理のために、 DataTable の For Each Row アクティビティを追加します。このアクティビティでファイル中の全ての行を処理します。


 設定プロパティ:
  • Misc → DataTable に Data変数を指定

計算のため、Type info アクティビティの追加
先程追加した For Each Row アクティビティの中に「Body」がありますが、そのの中に Type infoアクティビティを追加します。
 設定プロパティ:
  • Input textを "+" とします。

その下(同じ Body の中)に、Type infoアクティビティをもう一つ追加します。
 設定プロパティ:
  • Input textを row.Item(0).ToString とします。

この For Each Row アクティビティは、DataTableから1行づつ取得してすべての行について処理します。DataTable型は、CSV形式のデータに対してマッピングされ、 For Each Row アクティビティの中で扱うことができます。今回のデータは、1行に1つのデータしかありませんので、CSVデータの先頭の Item(0) だけを処理しています。そして、取得したデータを文字列形式に変換して、Type info アクティビティがキー入力するためのデータとしています。

こうして、 For Each Rowアクティビティによりすべての行に対して加算処理が行われますが、最後に "=" を入力する必要がありますが、これは For Each Row アクティビティの外側に、Type infoアクティビティとして追加します。ネスト(入れ子)が多くなると分かりづらいと思いますが、そんな時は For Each Rowアクティビティのタイトル部分をクリックするとタイトルと枠が黄色に変化します。この黄色の枠の外側に Type infoアクティビティを追加します。

 設定プロパティ:
  • Input textを "=" とします。

ココまでできたら、実行してみてください。
電卓が起動し、data.csvの内容全てを加算結果が出るはずです。サンプルのテキストファイルであれば、599995と電卓が表示されていればOKです

あと、もう少しです。計算結果の出力と後始末を行います。

Send hotkey アクティビティの追加
最後に電卓の合計結果をファイルに書き出さなくてななりません。
今回はクリップボード経由でファイルに出力します。
先程の"="を入力した Type info アクティビティの次に Send hotkey アクティビティを追加します。
 設定プロパティ:
  • Ctrlをチェック
  • Keyに c を入力

Close Window アクティビティの追加
結果はクリップボードにコピーしたので電卓は閉じても問題ありません。なので、Attach Windowアクティビティの外側に Close Window アクティビティを追加します。
アタッチしたときと同様に電卓を起動後、Indecate window on screen をクリックして、電卓を選択してください。

Get from clipboard アクティビティの追加
計算結果はクリップボードにあるので、一度UiPathの変数に取り込みます。
計算結果を受け取るための変数は「Answer」という変数名で作成してありますよね? ココに計算結果を受け取ります。
クリップボードの内容を変数 Answer に受け取るには、Get from clipboard アクティビティを使います。Close Window の下に追加します。
  • Output、Result に Answer を指定してください。

Write text file アクティビティの追加
最後に、Write text file アクティビティでファイルに書き出します。Get from clipboard の下に追加します。

 設定プロパティ:
  • File、FileName に "Result.txt" と設定します。
  • Input、Text に 「"Total : " + Answer + vbNewline」と設定します。

実行してみよう!
電卓アプリが起動していたら全て閉じて、実行します。
プロジェクトを作成したフォルダに、Result.txtというファイルができていて、内容は、
 Total : 599995
となっていればOKです。
おつかれさまでした!

最終的なアクティビティについて下記に示します。


ここまでくれば、UiPath の基本的な使い方は一通りやってみたことになります。あとは、アクティビティをうまく組み合わせてやりたいことを実現していくことが UiPath の使いこなしにつながっていきます。

2018/08/18 追記:
Windows 10 では、少し挙動が異なるようで、上記の設定では動作しないことがわかりました。
Type Info および Send HotKey アクティビティの”Indicate element inside window”で、電卓アプリを指定しないと動作しません。このため、Attach Window アクティビティを無くして、Type Info アクティビティだけとしても問題ありません。

やはり、OSのバージョンで挙動が異なる部分がありますね。


こんなのExcelで簡単にできるって?
じゃ、次からはもうちょっと実践的な内容にしてきましょう。

船橋の頭脳
Lightning Brains

コメント

このブログの人気の投稿

Linuxシステムコール、共有メモリの使い方

Linuxシステムコール、メッセージキューの使い方

Linuxシステムコール、セマフォの使い方