TSV 文字列; 特定列に接頭辞 (TSV String; Add Prefix to Column)
指定したカラムの全データに接頭辞Strを結合し、新しいTSV文字列を生成します。結合文字列は各行末に要素追加されます。データのカテゴリ分けなどでご利用いただけます。TSV文字列の末尾先頭にある空白文字や改行文字は事前に削除します。
Configs
  • A: TSV テキストが格納されている文字列型データ項目を選択してください *
  • B: 接頭辞が結合するカラムIDをセットしてください (例 “0”) *
  • C: 接頭辞をセットしてください (例 “https://”, “$ “, “<消> “)#{EL}
  • D: 結合前に文字列先頭を削除する場合は削除する文字数をセットしてください (例 “0”) *
  • E: 新しいTSVテキストが格納される文字列型データ項目を選択してください(更新) *
Script (click to open)
// GraalJS Script (engine type: 2)
// (c) 2021, Questetra, Inc. (the MIT License)

/*
=input tsv=
A1	B1	C1	10000
A2	B1	C1	10800
=Column ID=
3
=Prefix=
$
=BeginIndex=
2
=output tsv=
A1	B1	C1	10000	$000
A2	B1	C1	10800	$800
*/

//////// START "main()" ////////
main();
function main(){ 


//// == Config Retrieving / 工程コンフィグの参照 ==
const dataIdA = configs.get( "conf_DataIdA" ) + ""; // config required
const columnB = configs.get( "conf_ColumnB" ) + ""; // config required (int)
const prefixC = configs.get( "conf_PrefixC" ) + ""; // config el-enabled
const beginIndex = configs.get( "conf_BeginIndex" ) + ""; // config required (int)
const dataIdE = configs.get( "conf_DataIdE" ) + ""; // config required
// 'java.lang.String' to javascript primitive 'string' by ""

engine.log( " AutomatedTask Config: ID of Numeric Column: " + columnB );
engine.log( " AutomatedTask Config: Prefix: " + prefixC );
engine.log( " AutomatedTask Config: Begin Index: " + beginIndex );

// Design-time Config Format Check
const intColumnB  = parseInt( columnB );
if( isNaN( intColumnB )){
  throw new Error( "\n AutomatedTask ConfigError:" +
                   " Config {ID of Numeric Column} is not an integer \n" );
}
const intBeginIndex = parseInt( beginIndex );
if( isNaN( intBeginIndex )){
  throw new Error( "\n AutomatedTask ConfigError:" +
                   " Config {Begin Index} is not an integer \n" );
}
if( prefixC === "" ){
  engine.log( " AutomatedTask ConfigWarning:" +
              " Config {Prefix} is empty" );
}
if( prefixC.match(/\t/) !== null ){
  throw new Error( "\n AutomatedTask ConfigError or UnexpectedStringError:" +
                   " Config {Prefix}, Tab characters are not allowed. \n" );
}


//// == Data Retrieving / ワークフローデータの参照 ==
// Run-time Data Format Check
if( engine.findDataByNumber( dataIdA ) === null ){
  throw new Error( "\n AutomatedTask UnexpectedStringError:" +
                   " String {A} as TSV is null \n" );
}
const inputText = (engine.findDataByNumber( dataIdA ) + "").trim();
if( inputText === "" ){
  throw new Error( "\n AutomatedTask UnexpectedStringError:" +
                   " String {A} as TSV is empty \n" );
}


//// == Calculating / 演算 ==
let   outputText = "";
const arrInputText = inputText.split("\n");
engine.log( " AutomatedTask MultilineString:" + 
            " String {A} as TSV, number of lines " + arrInputText.length );

for( let i = 0; i < arrInputText.length; i++ ){
  let arrCellValues = arrInputText[i].split("\t");
  let strValueB = arrCellValues[ intColumnB ];
  let newValue  = prefixC + strValueB.slice( intBeginIndex );
  outputText += arrInputText[i] + "\t" + newValue;
  if( i !== arrInputText.length - 1 ){
    outputText += "\n";
  }
}


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


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

Download

2021-07-15 (C) Questetra, Inc. (MIT License)
https://support.questetra.com/ja/addons/tsv-string-add-prefix-to-column-2021/
Addonファイルのインポートは Professional でのみご利用いただけます

Notes

  1. 自動工程のコンフィグDに負の値(-N)に設定した場合、”接頭辞” は末尾N文字に対して連結されます。

Capture

See also

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