#はじめに
今回はHeartCore Roboにおける使用頻度の高い機能であるCSV処理をカバーします。
1) 既存CSVファイルの読込
2) 新規CSVファイルの作成・既存CSVファイルへのデータ追加
サンプルスクリプトも記載しています。CSV読込・作成以外の汎用的に使用出来る機能も使用していますので、是非トライしてみて下さい。
CSVファイルの読込
HeartCore Roboでデフォルトで用意されているコマンドテンプレートを使用することでCSVファイルの読込とカンマ区切りのデータ取得が用意に行えます。CSVから取得したデータは変数({VALUE})に格納されます。
使用するCSVファイルの例:
品名,単価,数量
りんご,200,2
みかん,100,3
なし,250,3
バナナ,200,3
もも,500,2
注:WindowsでNotepadを使用してCSVを作成する場合には、保存する際に文字コードをUTF-8を選択して下さい。
-
CSVファイル処理のコマンドテンプレートが追加(デフォルトで指定されているCSVが存在しないため、何箇所のコードが赤線(エラー)で表示されています)
-
変数{VALUE}にカンマ区切りまで含めたCSVデータが代入されます。変数に取得が出来ているか確認するためにLogコマンドを追加
Log {VALUE}
応用例:
CSVファイルへのパスをスクリプト冒頭の変数で宣言、File openコマンドで変数を指定することも可能です。
##CSVファイル読込のサンプルスクリプト
ロボットにWindowsアプリケーションのノートパッドを起動させて、指定したCSVファイルを読み込み、カンマ区分した値をスペース区切りを入れながらノートパッドに転記します。下記のサンプルは、プロジェクトフォルダ直下に「CSV」というフォルダを事前に作成、上記のデータを使用したCSVを事前に用意しておく必要があります。
下記サンプルは、Windows機能である「ファイル名を指定して実行」をショートカットを使い、Notepadのアプリケーション名を指定します。使用出来るのはWindows端末のみですが、「ファイル名を指定して実行」はアイコンをクリックせずにアプリケーションの起動が出来るので大変便利な機能です。「ファイル名を指定して実行」の使い方は別の回でもカバーします。
//既存のCSVファイルを指定(プロジェクトフォルダ直下「CSV」フォルダにある「注文データ.csv」を指定
File "open" file="..\CSV\注文データ.csv"
//「ファイル名を指定して実行」(Windows+R)を使用してNotepadを起動
Press "Windows+R"
Paste "Notepad"
Press "Enter"
//Notepadの起動を3秒待つ
Wait 3s
//CSVの行数を取得してループ文の上限カウンタに指定・2行目から開始
for (line=2; {line}<{_FILE_LINE_COUNT}; line={line}+1) {
//各行のカンマ区切りデータをカンマ毎に区分
File parse line={line}
//カンマ毎に区分された件数をループ文の上限カウンタに指定・1カラム目から開始
for (column=1; {column}<{_FILE_PARSE_COUNT}+1; column={column}+1) {
//各カラムのデータを変数VALUEに格納
Var VALUE={_FILE_PARSE_VALUE{column}}
//Notepadに貼付
Paste {VALUE}
//スペース貼付
Paste " "
}
}
Report "results.xml"
スクリプトを実行すると、ロボットがノートパッドに値を転記する動作が確認出来ます。テキストファイルへの転記は本来はバックエンド(ノートパッドを起動すること無く)実行出来ますが、ロボットの実動作を見るためのサンプルともなっています。
#CSVファイルの作成
CSVを新規に作成する場合には、File appendコマンドを使用してファイルの末尾にカンマ区切りがある文字列を追加していきます。
1. (新規にCSVファイルを追加する場合)空白行で右クリック > コマンドを作成 > Click File > File > File Createを選択
既存のCSVファイルの末尾にCSV行を追加する場合にはコマンドを作成 > Click File > File > File openを選択
2. プロパティ画面 > ...をクリックしてファイルパス選択
既存のCSVファイルの末尾にCSV行を追加する場合には既存のCSVファイルを選択
4. CSV出力のファイルパスが入力された事を確認してOKボタンをクリック
6. 直下の空白行で右クリック > コマンドを作成 > Click File > File > File Appendを選択
7. 追加するテキストにCSV行を記入 > OKをクリック
追加するテキストに変数({}で囲む)を指定することも可能です
9. 直下の空白行で右クリック > コマンドを作成 > Click File > File > File closeを選択
10. 「ファイルが変更されている場合は変更を保存します」にチェック > OKをクリック
11. 追加されたFile appendコマンド全体をハイライト > コピー(CTRL+V) > 直下行でペースト > 「改行コード」のエスケープシーケンスである"¥n"を追加
HeartCore RoboのエスケープシーケンスはJavaエスケープシーケンスに準拠します。
(HeartCore Roboエスケープシーケンス)
https://www.heartcorerobo.com/hcrobodesktop/docs/scripting/commref.html#varf
(Javaのエスケープシーケンス)
https://www.javadrive.jp/start/num/index4.html
12. File closeコマンドが追加されてsave="true"と指定されている事を確認
13. ロボットを実行
14. 指定したフォルダにCSVが出力されているのを確認
15. 出力を確認
上記の例ではNotepad++で確認しています。Windowsノートパッドでは改行コードが認識されず改行として表示されない場合があります
##CSVファイル作成のサンプルスクリプト
For文を使用して10行*5カラムのCSVファイルを新規に作成します。下記のサンプルは、プロジェクトフォルダ直下に「CSV出力」というフォルダを事前に作成しておく必要があります。
//新規CSVファイル出力先をプロジェクトフォルダ直下「CSV出力」フォルダに、ファイル名を「CSV出力.csv」と指定
File "create" file="..\CSV出力\CSV出力.csv"
//CSV行データ用変数の宣言
Var CSVLine=""
//行数分のループ(10回)
for (i=1; {i}<11; i={i}+1) {
//CSV行データ1カラム目に行数をセット
Var CSVLine="{i}"
//1行内カラム分のループ(5回)
for (j=0; {j}<5; j={j}+1) {
//CSV行データ2カラムー5カラム目にカンマを入れて数字をセット
Var CSVLine="{CSVLine},{j}"
}
//CSV行を末尾に追加
File "append" text="{CSVLine}"
//改行コード追加
File "append" text="\n"
//CSV行データのクリア
Var CSVLine=""
}
//CSVファイルを保存して閉じる
File "close" save="true"
Report "results.xml"
指定したフォルダにCSVファイルが出力されています。Excelかノートパッドアプリケーションで開いて内容を確認します。
↓
既存のCSVファイルに対して行を追加したい場合には、冒頭行のFile "create"からFile "open"にコマンドを変更して既存のCSVファイルを指定します。
File "create" file="..\CSV出力\CSV出力.csv"
↓
#次回について
次回は、「ファイル名を指定して実行」を使用してのアプリケーションの起動の便利な使い方や、特定のフォルダ内のファイル全てに対して何かしらの処理を行うために、「フォルダ内のファイル名一覧取得方法について」をカバーする予定です。