今回のテーマは「CSVファイルの操作」です。
CSVファイル同士ならExcelも使わず、画像マッチングやエミュレーションも使うことなく転記ができちゃうんです!
CSVファイルとは
本題に入る前に、CSVファイルについておさらいです。
CSVファイルとは「comma separated values」ファイル、つまり文字をコンマ(,)で区切ったテキストファイルのことです。拡張子は「.csv」で、互換性が高く、Excelやメモ帳をはじめ様々なソフトやシステムへ取り込んで閲覧や編集をすることができます。
コンマ区切りのデータ:メモ帳で開くとわかりやすい
実際にお客様先でRPAシナリオ開発の支援をさせていただく際にもCSVファイルを扱う機会があります。
基幹システムからのデータの出力や取込もCSV指定であることも多く、「取込用のCSVファイルを作成する」といったシナリオもよく見かけます。
”転記”といえばExcelを想像される方は多いのではないでしょうか。
扱うファイルがCSVであっても、転記などの加工はExcelを使用するという方もいらっしゃると思います。
ですが今回はあえてExcelを使わずに転記をする方法、そのメリットについて例題を交えてお伝えしたいと思います。
【例題】CSVファイル転記
日々の受注データを基幹システムからCSV形式で出力したファイルがあり、各ファイルから必要なデータを別のCSVファイルへ追記する業務を考えます。
今回はExcelを使わずに転記します。
転記後のNoはそのまま転記ではなく新たに通し番号を取得し記入
フォルダ構成
「受注データ」フォルダに日ごとの受注データのCSVファイルが格納されており、転記が終わったらそれらは処理済みフォルダへ移動します。
転記先のCSVファイルは転記フォルダ直下に配置するようにします。
今回は3ファイルですがいくつあっても動くようにしたい
シナリオ
WinActorで「ライブラリ▸13_ファイル関連▸01_テキストファイル操作」のノードを使ってシナリオを作成してみました。
ご注目いただきたいのは2つの「テキストファイル追記」です。
1つ目の「テキストファイル追記」ノードでは「転記先CSV」ファイルを作成し、データの1行目になるカラム名(No、受注日など)を書き込んでいます。
2つ目の「テキストファイル追記」ノードでは、各受注データCSVから取得した実データを書き込みしています。
💡 便利ポイント① 「ファイルを作成する」工程が不要
「テキストファイル追記」ノードはファイルパスを指定することで、既にファイルが存在すればそのファイルへ書き込みをおこない、ファイルがなければ作成した上で書き込みをおこなうことができます。既にファイルがある場合は、書き込まれているデータの続きから追記されます。
「ライブラリ▸13_ファイル関連▸01_テキストファイル操作」には「テキストファイル書込」もありますが、こちらは既にファイルがある場合、中のデータへ上書きされます。
💡 便利ポイント② ファイルを開かずに操作できる
「01_テキストファイル操作」のライブラリのほとんどは操作対象のファイルを開かずに操作をおこなうことができます。
ファイルを開かずに操作できるので素早く処理ができ、また「開く」「閉じる」操作、ファイル開く待機時間が不要になりますので、こういった操作に関わるノードを減らすことができます。
💡 便利ポイント③ 0落ちを防ぐことができる
業務で扱うデータの中には「0(ゼロ)」で始まるデータがあります。日本国内の電話番号もその一つです。
Excelはその仕様によって、元のデータでは0から始まる数値であっても開くと頭の0がなくなった形式で表示されます。この状態はよく「0(ゼロ)落ち」と呼ばれます。
Excelで開いた時に0が落ちないようにするためにはセルの表示形式を文字列にするなど、ひと手間必要になります。
0が落ちても問題ないデータなら良いのですが、電話番号などは先頭の0も含めた形が正しいデータなので、転記やシステムへの取込時に0が抜けていては困ります。
テキストファイル操作を使うことで0落ちさせずにデータの取得や記入ができますので、0で始まるデータを含むファイルを扱う際にはこのやり方をぜひ検討してみてください🎵
☕ おまけ 繰り返しノードを使って値の取得
今回のシナリオ(図3)では一見どこで転記元のCSVファイルから値を取得しているかわかりづらいかもしれませんが、実は「繰り返し」ノードで値を取得しています。
※先に出てくる繰り返しは元ファイルの数だけ転記を繰り返すための繰り返し
繰り返しの設定で「データ数」を選び、転記元CSVファイルのパスを設定することで、このノードで値の取得をしてくれます。
但しこのやり方をするにはいくつかルールがあります。
☑ 読み込むファイルはExcelまたはCSVであること
☑ データベース形式のファイルであること
(データベース形式とは1行目が項目名、2行目以降が実データの形式)
☑ ファイルのカラム名と同じ名前の変数があること
なお値の取得に加えて値取得する行の番号をカウントアップするためのノードも不要で、データがある分だけ処理を繰り返すことができます。
条件が揃っているときは積極的に使っていきたいおすすめの設定方法です。
おわりに
CSVファイルは様々なシステムで対応している互換性の高いファイルなので、普段目にする機会も多くシナリオ作成時に使用する機会も多いと思います。早くて正確でシンプルなシナリオ作成に役立てていただけたら幸いです。
同梱ライブラリやプチライブラリには今回ご紹介したノード以外にも便利なノードがまだまだありますので、ご興味ある方ぜひ探してみてください🎵
【参考】ノードプロパティ
図3でご紹介したシナリオの各ノードのプロパティです。
転記のお話繋がりで前回の記事もぜひご参照ください👇