Converter (Text File to String type data)

コンバータ (テキストファイル to 文字型データ)

This item overwrites the value of String type data item with the contents of a text file stored in File type data item.

Auto Step icon
Basic Configs
Step Name
Note
Configs for this Auto Step
File_DataId
C1: Data item that stores the target text file *
conf_ReadFileCharset
C2: If charset is specified in Content-Type, give priority to it
conf_CharacterEncoding
C3: Character encoding when reading (UTF-8 if not selected)
String_DataId
C4: Data item to save the text data *

Capture

See Also

Script (click to open)
  • An XML file that contains the code below is available to download
    • converter-textfile-to-string.xml (C) Questetra, Inc. (MIT License)
    • If you are using Professional, you can modify the contents of this file and use it as your own add-on auto step


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;
}

%d