Converter (Text File to String type data)

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

Discover more from Questetra Support

Subscribe now to keep reading and get access to the full archive.

Continue reading

Scroll to Top