コンバータ (TSV to Excel-CSV FILE) SJIS

文字型データ項目に格納されたタブ区切りテキスト(TSV)が、Excel 対応の CSV ファイルとしてファイル型データ項目に保存します

2018 © Questetra, Inc. (MIT License)
https://support.questetra.com/ja/addons/converter-tsvtoexcelcsvsjis/

Configs
  • A: TSVデータが格納されている文字列型データを選択してください *
  • B: 抽出データのカラム ID をセットしてください (例 “0,1,5,3,6”) *
  • C: ファイル名が格納されている文字列型データを選択してください *
  • D: ファイルが追加されるファイル群型データを選択してください(追加) *
Script
//////// START "main()" ////////
main();
function main(){

//// == Config Retrieving / 工程コンフィグの参照 ==
const dataIdA   = configs.get( "conf_DataIdA" ) + "";
const dataIdC   = configs.get( "conf_DataIdC" ) + "";
const dataIdD   = configs.get( "conf_DataIdD" ) + "";
const colIds    = configs.get( "conf_ColIds" )  + "";
const arrColIds = colIds.split(",");
// 'java.lang.String' (String Obj) to javascript primitive 'string'
// https://wiki.openjdk.java.net/display/Nashorn/Rhino+Migration+Guide#RhinoMigrationGuide-JavaScriptvsJavaStrings
// https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/api.html#sthref21


//// == Data Retrieving / ワークフローデータの参照 ==
let   myTsv     = engine.findDataByNumber( dataIdA );
if(   myTsv   !== null ){ myTsv += ""; }else{
  throw new Error( "Source TSV data is NULL" );
}
const arrMyTsv  = myTsv.split("\n");

let   fileName  = engine.findDataByNumber( dataIdC ) + ""; // NULL to "null"
let   myFiles   = engine.findDataByNumber( dataIdD ); // java.util.ArrayList
if( myFiles === null ){ myFiles = new java.util.ArrayList(); }


//// == Calculating / 演算 ==
let   newTsv    = "";
for( let i = 0; i < arrMyTsv.length; i++){
  let arrCellValues = arrMyTsv[i].split("\t");
  for( let j = 0; j < arrColIds.length; j++ ){
    newTsv += arrCellValues[ parseInt( arrColIds[j] ) ];
    if( j != arrColIds.length - 1 ){
      newTsv += "\t";
    }
  }
  if( i != arrMyTsv.length -1 ){
    newTsv += "\n";
  }
}

// for sjis-csv
let newSjisCsv = newTsv.replace( /,/g, "" ).replace( /\t/g, "," );

myFiles.add(
  new com.questetra.bpms.core.event.scripttask.NewQfile(
    fileName,
//    "text/tab-separated-values; charset=x-UTF-16LE-BOM",
    "text/comma-separated-values; charset=Shift_JIS", // for sjis
//    newTsv
    newSjisCsv
  )
);


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

} //////// END "main()" ////////

Download

Capture

Notes

  • カラムの順序変更・フィルタ・重複掲載などの操作も可能です
  • ファイル実体は comma-separated-values (Shift-JIS) です
  • tab-separated-values (utf-16le-bom) と比べて、スマートフォン表示やデータインポートの可用性が高まりますが、データ内の Comma 情報が欠落します

See also

2017-04-03 第529話:PayPal業務のサブルーチン化

%d