コンバータ (テキストファイル to 文字型データ)
Converter (Text File to String type data)
この工程は、文字型データ項目の値を、ファイル型データ項目に格納されているテキストファイルの内容で、上書きします。
Basic Configs
- 工程名
- メモ
Configs for this Auto Step
- File_DataId
- C1: 対象のテキストファイルが格納されているデータ項目 *
- conf_ReadFileCharset
- C2: Content-Type で charset が指定されていれば、その文字コードを優先させる
- conf_CharacterEncoding
- C3: 読み込む際の文字コード(未設定の場合、UTF-8)
- String_DataId
- C4: テキストを保存するデータ項目 *
Capture
See Also
Script (click to open)
- 次のスクリプトが記述されている XML ファイルをダウンロードできます
- converter-textfile-to-string.xml (C) Questetra, Inc. (MIT License)
- Professional のワークフロー基盤では、ファイル内容を改変しオリジナルのアドオン自動工程として活用できます
main();
function main() {
//// == Config Retrieving / 工程コンフィグの参照 ==
const textFileDataNum = configs.get("File_DataId");
const stringDataNum = configs.get("String_DataId");
const readFileCharset = configs.getObject("conf_ReadFileCharset");
const characterEncoding = configs.get("conf_CharacterEncoding");
//// == Data Retrieving / ワークフローデータの参照 ==
const myFiles = engine.findDataByNumber(textFileDataNum);
// java.util.ArrayList
// ファイル型データ項目にファイルが1つも添付されていない場合、文字型データ項目にnull をセット
if (myFiles === null) {
engine.setDataByNumber(stringDataNum, null);
return;
}
// ファイル型データ項目に複数添付されている場合、エラー
if (myFiles.size() > 1) {
throw new Error("Attachment of multiple files can not be supported.");
}
// ファイル型データ項目にファイルが1つ添付されている場合
//// == Determine Charset / charset を決める ==
const charset = determineCharset(myFiles.get(0), readFileCharset, characterEncoding);
//// == Data Updating / ワークフローデータへの代入 ==
updateData(stringDataNum, myFiles, charset);
}
/**
* ファイルの内容を文字型データ項目に上書き出力
* @param {String} stringDataNum 保存先文字型データ項目の番号
* @param {java.util.ArrayList<QfileView>} myFiles ファイル型データの配列
* @param {String} charset 文字コード
*/
function updateData(stringDataNum, myFiles, charset) {
let myFileText = "";
fileRepository.readFile(myFiles.get(0), charset, function (line) {
myFileText += line + "\n";
});
//// == Data Updating / ワークフローデータへの代入 ==
engine.setDataByNumber(stringDataNum, myFileText);
}
/**
* 文字コードを決定する
* @param {QfileView} myFile ファイル型データ項目
* @param {boolean} readFileCharset Content-Type のcharset で読み込むか
* @param {String} characterEncoding 読み込む際の文字コード
* @return {String} charset 文字コード
*/
function determineCharset(myFile, readFileCharset, characterEncoding) {
const charset = myFile.getCharset();
if (readFileCharset === true && charset !== null) {
return charset;
}
if (characterEncoding === null || characterEncoding === "") {
return 'UTF-8';
}
return characterEncoding;
}