Addon: TSV String; Add Suffix to Column
TSV String; Add Suffix to Column

Generates a new TSV with concatenating the suffix Str to all cells in the column. The concatenated strings are added at the end of the line. Available for name honorifics or currency units etc. Removes whitespace from both ends of a string.

2019-08-07 (C) Questetra, Inc. (MIT License)
https://support.questetra.com/addons/tsv-string-add-prefix-to-column/

Configs
  • A: Select STRING DATA for TSV Text *
  • B: Set Column ID to which suffix is concatenated (e.g. “0”) *
  • C: Set Suffix String (e.g. ” Mbps”, ” MR”, “USD”) #{EL}
  • D: Set Number of Characters to remove last (e.g. “-6”) *
  • E: Select STRING DATA for New TSV Text (update) *
Script
// (c) 2019, Questetra, Inc. (the MIT License)

/*
=input tsv=
A1	B1	C1	10000
A2	B1	C1	10800
=Column ID=
3
=Suffix=
Mbps
=EndIndex=
-3
=output tsv=
A1	B1	C1	10000	10Mbps
A2	B1	C1	10800	10Mbps
*/

//////// 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 suffixC = configs.get( "conf_SuffixC" ) + ""; // config el-enabled
const endIndex = configs.get( "conf_EndIndex" ) + ""; // 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: Suffix: " + suffixC );
engine.log( " AutomatedTask Config: End Index: " + endIndex );

// 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 intEndIndex = parseInt( endIndex );
if( isNaN( intEndIndex )){
  throw new Error( "\n AutomatedTask ConfigError:" +
                   " Config {End Index} is not an integer \n" );
}
if( suffixC === "" ){
  engine.log( " AutomatedTask ConfigWarning:" +
              " Config {Suffix} is empty" );
}
if( suffixC.match(/\t/) !== null ){
  throw new Error( "\n AutomatedTask ConfigError or UnexpectedStringError:" +
                   " Config {Suffix}, 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  = "";
  if( intEndIndex === 0 ){
    newValue  = strValueB + suffixC;
  }else{
    newValue  = strValueB.slice( 0, intEndIndex ) + suffixC;
  }
  outputText += arrInputText[i] + "\t" + newValue;
  if( i !== arrInputText.length - 1 ){
    outputText += "\n";
  }
}


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


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

Download

Capture

Notes

  1. If EndIndex D specified a positive number, the zero-based index before which to end extraction.

See also

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d