TSV 文字列; 特定列に接尾辞

TSV 文字列; 特定列に接尾辞

ビルトイン自動処理工程[CSV データ更新]を使って、同様の処理を行うことができます。(推奨)

[CSV データ更新]で、TSV 文字列の特定列に接尾語を追加する際の設定は、以下のとおりです。

  • C1: 〈接尾語を追加する TSV ファイルを入力するデータ項目〉
  • C1a: 「TSV」 / 「ヘッダあり」
  • C1b: 〈C3で呼び出すためのテーブル名(例: 販売データ)〉
  • C2: 〈接尾語を記入する TSV ファイルを入力するデータ項目〉
  • C2a: 「TSV」 / 「ヘッダあり」
  • C2b: 〈C3で呼び出すためのテーブル名(例: 修飾語)〉
  • C3: 「商品名」「販売先」「敬称」の部分を実際のカラム名に置き換えた上で、下記のクエリを指定してください
    
    SELECT
    "商品名",
    CONCAT("販売先", "敬称") AS "販売先(敬称付き)"
    -- 「販売先」列の各文字列に「敬称」を追加して、「販売先(敬称付き)」という列に格納
    FROM
    "販売データ", "敬称"
  • C4: 「テーブル全体を CSV/ TSV 形式で1つのデータ項目に保存する」
  • C4a: 〈結果のTSV を格納するデータ項目〉 
  • C4b: 「TSV」
  • C4c: 「必要な場合のみ」

入力する TSV データは、1行目に各列のカラム名が入力されたデータを用意してください。接尾語用に入力する TSV データ は、一行目にカラム名、二行目に〈接尾語となる文字列〉の二行だけを入力してください。

TSV 文字列; 特定列に接尾辞 (TSV String; Add Suffix to Column)
指定したカラムの全データに接尾辞Strを結合し、新しいTSV文字列を生成します。結合文字列は各行末に要素追加されます。敬称や通貨単位の追加などでご利用いただけます。TSV文字列の末尾先頭にある空白文字や改行文字は事前に削除します。
Configs
  • A: TSV テキストが格納されている文字列型データ項目を選択してください *
  • B: 接尾辞を結合するカラムIDをセットしてください (例 “0”) *
  • C: 接尾辞をセットしてください (例 ” Mbps”, ” 様”, “百万円”)#{EL}
  • D: 結合前に文字列末尾を削除する場合は削除する文字数を負の数でセットしてください (例 “-6”) *
  • E: 新しいTSVテキストが格納される文字列型データ項目を選択してください(更新) *
Script (click to open)
// GraalJS Script (engine type: 3)
// (c) 2025, 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

warning 自由改変可能な JavaScript (ECMAScript) コードです。いかなる保証もありません。
(アドオン自動工程のインストールは Professional editionでのみ可能です)

Notes

  1. EndIndex D に正の数を指定した場合は、抽出範囲の終了位置インデックス(N文字目まで抽出)とみなします。

Capture

See also

上部へスクロール

Questetra Supportをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む