TSV String; Add N to Number Column

Generates a new TSV with adding N to each number in the number column. Calculation results are added at the end of the line. Available at discounted price table etc. Removes whitespace from both ends of a string.

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

Configs
  • A: Select STRING DATA for TSV Text *
  • B: Set ID of Numeric Column to be added (e.g. “0”, “3”) *
  • C: Set Value to add (e.g. “1.5”, “-500”) *
  • D: 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
=N=
-500
=output tsv=
A1	B1	C1	10000	9500
A2	B1	C1	10800	10300
*/

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


//// == Config Retrieving / 工程コンフィグの参照 ==
const dataIdA = configs.get( "conf_DataIdA" ) + ""; // config required
const columnB = configs.get( "conf_ColumnB" ) + ""; // config required
const valueC  = configs.get( "conf_ValueC" )  + ""; // config required
const dataIdD = configs.get( "conf_DataIdD" ) + ""; // config required
// 'java.lang.String' to javascript primitive 'string' by ""

engine.log( " AutomatedTask Config: ID of Numeric Column " + columnB );
engine.log( " AutomatedTask Config: Value to add " + valueC );

// 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 numValueC  = parseFloat( valueC );
if ( isNaN( numValueC )){
  throw new Error( "\n AutomatedTask ConfigError:" +
                   " Config {Value to add} is not a number \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 numValueB = parseFloat( strValueB );
  // Run-time Data Format Check
  if ( isNaN( numValueB )){
    throw new Error( "\n AutomatedTask UnexpectedStringError:" +
    " String {A} as TSV, Specified Column is not numeric at " + i + "\n" );
  }
  let newValue  = numValueB + numValueC;
  outputText += arrInputText[i] + "\t" + newValue;
  if( i !== arrInputText.length - 1 ){
    outputText += "\n";
  }
}


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


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

Download

Capture

See also

1 thought on “TSV String; Add N to Number Column”

  1. Pingback: TSV String; Sum of Number Column – Questetra Support

Leave a Reply

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

%d bloggers like this: