コンバータ (テーブル型データ to Excel-CSV ファイル) (Converter (Table type data to Excel-CSV File))
テーブル型データ項目の値を、Excel 対応の CSV としてファイル型データ項目に格納します。ファイルは追加され、既存のファイルには影響を与えません。
Configs:共通設定
  • 工程名
  • メモ
Configs
  • A: 対象のテーブル型データ項目 *
  • B: 保存ファイル名 * #{EL}
  • C: CSV を保存するファイル型データ項目 *

Capture

Notes

  • ファイル実体は tab-separated-values (utf-16le-bom) です

See also

Appendix

  • converter-table-to-excelcsv.xml (C) Questetra, Inc. (MIT License)
    • Professional をご利用であればファイルの内容を改変することでオリジナルのアドオンとして活用できます
Script
main();
function main() {
  //// == Config Retrieving / 工程コンフィグの参照 ==
  const tableId = configs.get("Table_DataId");
  const filename = configs.get("File_Name");
  const fileId = configs.get("File_DataId");

  if (filename === "" || filename === null) {
    throw new Error("File Name is blank");
  }

  //// == Data Retrieving / ワークフローデータの参照 ==
  const myTable = engine.findDataByNumber(tableId);
  // com.questetra.bpms.core.model.formdata.ListArray
  let myFiles = engine.findDataByNumber(fileId); // java.util.ArrayList
  if (myFiles === null) {
    myFiles = new java.util.ArrayList();
  }

  let myTsv = "";

  if (myTable !== null) {
    myTsv = tableToTsv(myTable);
  }

  myFiles.add(
    new com.questetra.bpms.core.event.scripttask.NewQfile(
      filename,
      "text/tab-separated-values; charset=x-UTF-16LE-BOM",
      myTsv
    )
  );

  //// == Data Updating / ワークフローデータへの代入 ==
  engine.setDataByNumber(fileId, myFiles);
}

/**
 * テーブル型データ を tsv に変換する
 * @param {com.questetra.bpms.core.model.formdata.ListArray} myTable テーブル型データ
 * @return {String} mytsv 変換後の tsv 形式の文字列
 */
function tableToTsv(myTable) {
  //// == Calculating / 演算 ==
  const numOfRows = myTable.size() - 0; // 行(Tableの高さ)
  const numOfCols = myTable.getRow(0).size(); // 列(Tableの幅)
  let mytsv = "";

  for (let i = 0; i < numOfRows; i++) {
    for (let j = 0; j < numOfCols; j++) {
      mytsv += myTable.get(i, j);
      if (j != numOfCols - 1) {
        mytsv += "\t";
      }
    }
    if (i != numOfRows - 1) {
      mytsv += "\n";
    }
  }

  return mytsv;
}
%d人のブロガーが「いいね」をつけました。