LoginSignup
6
6

More than 5 years have passed since last update.

初心者が話すUiPath ~Excel処理問題【懇親会編】 [2]~

Last updated at Posted at 2018-03-31

今回は
初心者が話すUiPath ~Excel処理問題【懇親会編】 [1]~
にて書いた、シチュエーションの自動化について書いていこうと思います。

作成予定の機能

前回も書きましたが、以下の内容を自動化していきたいと思います。

・一次会、二次会の参加予定人数の把握
・アンケート未回答者の把握
・excelのソート(参加、不参加、アンケート未回答)
・それぞれがいくら払うかの計算(役職に依存)
・部署ごとにexcelを分ける
・部署代表にexcelを添付し、メールで送る

課題資料(Googleドライブに飛びます)
※ダウンロードすると、同じ行全ての文字が合わさったものになってしまうので、
Webで表示し、コピーペーストをして作成、使用してください。
※作業途中で上記の内容はよく発生するので、別のフォルダで予備を保存しておくことをお勧めします。
こんなかんじで↓
4.jpg予備用
5.jpgxlamと同じファイル配下(実際に使用)

所持しているアンケート結果、各部署の名簿一覧.csvは
以下のようになっています。

↓アンケート結果
3.jpg

↓営業部名簿
6.jpg

準備出来ましたか?

UiPathの新規作成

UiPathを開きます。

1.jpg

いつも通り「Continue Free」をクリック。
適当な場所に適当なファイル名で、フローチャートを新規作成しましょう。
因みにこのTOP画面からの新規作成は、
Start > Simple Process をクリックすることで可能です。

流れの作成

どういった構成にするかを考えていきます。
本当は紙に書いていった方が良いのですが、
私は直接シーケンスを組みながら書いていく事多いです。

左のActivityからSequenceを引っ張り出してきます。
因みに、Sequenceを選択(黄色の状態)、
右クリック、Annotations>Add Annotationをクリックすると、
メモのようなものを記入、設置することが出来ます。

スクリーンショット (26).png

部署の特定

部署の特定を行いましょう。

その為にはまずアンケート結果のエクセル情報を取り出します。

ActivityからReadCSVを持ってきます。
「...」をクリックすると、直接使用したいCSVファイルを選択することが出来ます。
もしくは右側のPropertiesからFilePathを直接記入で、ファイルの指定が出来ます。

10.jpg

今回は「アンケート結果」のCSVファイルを選択します。
そしてPropertiesのOutput>DataTableにて、
このエクセルの情報を格納するDataTable型の変数を設定します。

(Ctrl+K を使用することで、Variablesにて変数を作成せずとも、
その場で変数を適切な型で生成することが出来ます。)

今回はresultDTという変数にしました。
(変数名つけるのまだまだ下手くそなんです。
 お許しください)

次にこのDataTableを回す機能を付けます。
回すってなんだ!?となると思うので、
ちょっと試してみましょう。

For Each Row を使用します。
使用するDataTableをセットします。
(今回はresultDT)
その中にWrite Lineを設置し、
row(0).ToString
と入力してみてください。

Write Lineはログ出力が出来ます。
Outputエリアに文字列等を出力できます。

row(0)は
エクセルデータの一列目のデータを指します。

試しにRunしてみましょう。

11.jpg

左下のOutputエリアに
ログが出力されています。

酷い文字化けですね!

本来ならば、「アンケート結果」のエクセルの
一列目に書かれている社員の名前が羅列されるはずが、
文字化けを起こしてしまっています。

こんな時の対処方は
Read CSV にてEncodingを指定します。
「"Shift-JIS"」と、入力し
再度Runしてみましょう。

12.jpg

左下のOutputをご覧ください。
正常に名前が出力できています。

このようにFor Each RowはDataTableを一行ずつ巡っていきます。
一行見たら二行目、その次は三行目と、
存在するデータがなくなるまでぐるぐるFor Each Rowの中を何度も繰り返します。

では営業部の方だけ、ログ出力されるようにしてみましょう。

Read CSVをFor Each Rowの中に設置し、
営業のエクセルデータを格納する変数を作成しましょう。
(私は変数をsalesMemberDTにしました)

For Each Rowの中に、もう一つFor Each Rowを設置します。
今度はsalesMemberDTを回し、resultDTと比較していきます。

salesMemberDTのFor Each Rowのrowを違うものにしておきましょう。
混ざってしまうので。

ifを設置し、比較をしていきます。

これで、アンケート結果のデータを一行ずつ回し、
1人ずつ営業名簿に名前がないかチェックしていきます。
そして営業部の方だった場合、ログに名前が出力されるようになりました。

13.jpg

Runしていきましょう。

14.jpg

Outputに営業の方のみ、名前が出力されています。

成功です♪

 

 
 

今回はここで終わりにします!
エクセルの比較が出来るようになりました。
しかし営業部のみです。
このFor Each Rowを使用した比較をあと二つも設置すると、
ごちゃごちゃしてしまいますよね?

な の で

次はとある機能を使って、コンパクトにしていきたいと思います!

皆さんも考えてみてください!

6
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6