4.2.18 ファイルエクスポート部品
機能
指定した値を任意の形式で,ファイルに出力できます。
指定した値のフォーマット処理には,Apache Velocity Engineが使用されます。
注意事項
-
部品の実行中にタスクを実行停止した場合は,ファイルエクスポート部品の処理が完了してからタスクの状態が「失敗」または「正常終了」になります。部品の実行が終了したときのステップおよびタスクの状態は,ステップの戻り値および後続ステップ実行条件によって決まります。後続ステップ実行条件は,[ステップ作成]ダイアログボックスまたは[ステップ編集]ダイアログボックスで設定できます。
-
部品の実行中にタスクを強制停止した場合は,実行中の処理が直ちに終了され,タスクの状態が「失敗」になります。なお,[タスク]画面の[フロー]エリアに表示されるステップの戻り値は,80になります。タスクログに出力される戻り値は,強制停止したタイミングによって異なります。
バージョン
01.00.00
タグ
File Operations
戻り値
戻り値 |
説明 |
---|---|
0 |
正常に終了した。 |
1 |
出力先ファイルパスに指定された値のパス長が最大値を超えている。 |
2 |
VTL(Velocity Template Language)記述に文法エラーがあった。 |
3 |
内部エラーが発生した。 |
4 |
内部エラーが発生した。 |
5 |
出力ファイルへの書き込み中にエラーが発生した。 |
63 |
内部エラーが発生した。 |
80 |
タスクの実行を停止した。 |
プロパティ一覧
プロパティを次の表に示します。
プロパティキー |
プロパティ名 |
説明 |
デフォルト値 |
入出力種別 |
必須区分 |
---|---|---|---|---|---|
content |
エクスポートコンテンツ |
ファイルに出力する内容の基となる文字列を指定します。 |
− |
入力 |
○ |
fileName※1 |
出力ファイル名 |
出力ファイル名を指定します。 |
− |
入力 |
○ |
directoryPath※1 |
出力先ディレクトリパス |
出力ファイルの格納先フォルダを,絶対パスまたは相対パスで指定します。 指定を省略した場合は,次のフォルダが設定されます。また,相対パスを指定した場合は,このフォルダが起点となります。
|
− |
入力 |
△ |
template |
出力用テンプレート |
値の出力形式を指定します。値の出力形式は,VTLで指定してください。指定を省略した場合は,入力値がそのまま出力されます。 |
− |
入力 |
△ |
charset |
文字セット |
出力されるファイルの文字セットを指定します。指定できる文字セットを次に示します。大文字と小文字は区別しません。
|
− |
入力 |
△ |
exportFilePath |
出力ファイルパス |
出力ファイルのフルパスが出力されます。 |
− |
出力 |
△ |
Message |
メッセージ |
部品の実行中に発生したエラーメッセージが出力されます。 |
− |
出力 |
△ |
- 注※1
-
-
プロパティ「fileName」および「directoryPath」に指定した値は,合計で256文字以内で指定してください。これを超えた場合はエラーになります。
-
同じ名称のファイルがある場合,上書き保存されます。
-
同じ名称のフォルダがある場合はエラーになります。このとき,戻り値5が返却されます。
-
プロパティ「template」に指定できる予約変数
プロパティ「template」は,VTLに準拠して指定してください。ファイルエクスポート部品では,このときに使用できる予約済み変数を提供しています。
-
$root
プロパティ「content」に指定した文字列がJSON形式の場合,JSONデコードしたオブジェクトとして出力されます。また,プロパティ「content」に指定した文字列がJSON形式でない場合は,文字列として出力されます。
-
$csv.value(String)
単一の文字列を引数に指定すると,指定した文字列がCSV形式の1セルに相当する形式で出力されます。例えば,文字列中にCSVでエスケープが必要な文字が含まれる場合,値は「"」で囲まれます。また,文字列中に「"」が含まれる場合は,エスケープされます。
-
$csv.values(String…)
複数の文字列を引数に指定すると,CSV形式の1行に相当する形式で出力されます。
-
$csv.values(Collection<String>)
配列の文字列を引数に指定すると,CSV形式の1行に相当する形式で出力されます。
プロパティ「content」およびプロパティ「template」の指定例
-
プロパティ「content」にJSON形式でない文字列を指定し,プロパティ「template」の指定を省略した場合
「content」の値
「template」の値
出力される内容
Hello!
指定なし
Hello!
-
プロパティ「content」にJSON形式の文字列を指定し,プロパティ「template」の指定を省略した場合
「content」の値
「template」の値
出力される内容
{ "task": "Daily batch", "result": "success" }
指定なし
{ "task": "Daily batch", "result": "success" }
-
プロパティ「content」にJSON形式でない文字列を指定し,プロパティ「template」に予約変数「$root」を指定した場合
「content」の値
「template」の値
出力される内容
success
The result is $root!
The result is success!
-
プロパティ「content」にJSON形式(オブジェクト)を指定し,プロパティ「template」に予約変数「$root」を指定した場合
「content」の値
「template」の値
出力される内容
{ "task": "Daily batch", "result": "success" }
The result of $root["task"] was $root["result"]!
The result of Daily batch was success!
-
プロパティ「content」にJSON形式(配列)を指定し,プロパティ「template」に予約変数「$root」を指定した場合
「content」の値
「template」の値
出力される内容
[ "success", "fail", "success" ]
The results are #foreach ($result in $root) $result #end
The results are success fail success
-
プロパティ「content」にJSON形式を指定し,プロパティ「template」に予約変数「$csv.values(String…) 」を指定した場合
「content」の値
「template」の値
出力される内容
[ { "task": "Daily batch", "result": "success" }, { "task": "Weekly batch", "result": "fail" } ]
$csv.values("task", "result") #foreach($row in $root) $csv.values($row["task"], $row["result"]) #end
task,result Daily batch,success Weekly batch,fail
-
プロパティ「content」にJSON形式を指定し,プロパティ「template」に予約変数「$csv.values(Collection<String>) 」を指定した場合
「content」の値
「template」の値
出力される内容
[ ["task", "result"], ["Daily batch", "success"], ["Weekly batch", "fail"] ]
#foreach($row in $root) $csv.values($row) #end
task,result Daily batch,success Weekly batch,fail
-
プロパティ「content」にCSVでエスケープが必要な文字(「"」,「,」)が含まれ,プロパティ「template」に予約変数「$csv.values(Collection<String>) 」を指定した場合
「content」の値
「template」の値
出力される内容
[ "normal", "\"quoted\"", "Hello, World", "double \" quote" ]
$csv.values($root)
normal,"""quoted""", "Hello, World","double "" quote"
-
プロパティ「content」にCSVでエスケープが必要な文字(改行)が含まれ,プロパティ「template」に予約変数「$csv.values(Collection<String>) 」を指定した場合
「content」の値
「template」の値
出力される内容
line1 line2 line3
$csv.value($root)
"line1 line2 line3"