TSV文字列, 除外テキストフィルタ (TSV String, Filter Out by Text)
任意の検索テキストでTSV文字列の行除去を行います(除外フィルタ)。すなわち指定カラムに検索テキストが含まれない行のみが出力されます。複数テキストによる OR 検索をしたい場合は “USA,U.S.,United States” のようにカンマ区切りで指定します。
Configs
- A: TSV文字列が格納されている文字列型データ項目を選択してください *
- B-target: 検索が適用されるカラムIDをセットしてください (例 “0” ) *#{EL}
- B-texts: 検索テキストをセットしてください (例 “USA” “USA,U.S.” ) *#{EL}
- C: フィルタされたTSV文字列が格納される文字列型データ項目を選択してください (更新) *
Script (click to open)
// GraalJS Script (engine type: 2)
// (c) 2021, Questetra, Inc. (the MIT License)
// Notes:
// Cannot specify search terms that contain a comma.
// Special characters in search text settings have no meaning (literal string).
// Notes(ja):
// カンマを含む検索語は指定できません
// 検索テキスト設定の特殊文字に意味はありません(リテラル文字列)
//////// START "main()" /////////////////////////////////////////////////////////////////
main();
function main(){
//// == Config Retrieving / 工程コンフィグの参照 ==
const dataIdA = configs.get( "conf_DataIdA" ) + ""; // config required
const targetColId = configs.get( "conf_TargetColId" ) + ""; // config required
const searchTexts = configs.get( "conf_SearchTexts" ) + ""; // config required
const dataIdC = configs.get( "conf_DataIdC" ) + ""; // config required
if( targetColId === "" ){
throw new Error( "\n AutomatedTask ConfigError:" +
" Config {Column ID} is empty \n" );
}
if( searchTexts === "" ){
throw new Error( "\n AutomatedTask ConfigError:" +
" Config {Search Texts} is empty \n" );
}
const numTargetColId = parseInt( targetColId );
//// == Data Retrieving / ワークフローデータの参照 ==
const inputString = engine.findDataByNumber( dataIdA ) + "";
const arrInputString = inputString.split("\n");
engine.log( " AutomatedTask MultilineString:" +
" TSV {A}, number of lines: " + arrInputString.length );
//// == Calculating / 演算 ==
let outputString = "";
const arrSearchTexts = searchTexts.split(",");
let arrSearchRegExp = [];
for( let i = 0; i < arrSearchTexts.length; i++ ){
engine.log( " AutomatedTask Search Text[" + i +"]: " + arrSearchTexts[i] );
if( arrSearchTexts[i] === "" ){
throw new Error( "\n AutomatedTask ConfigError:" +
" Config {Search Text[" + i +"]} is empty \n" );
}
let contain = new RegExp( arrSearchTexts[i]
.replace(/[.*+?^=!:${}()|[\]\/\\]/g, '\\$&')
); // Escaping for a literal string search
// For a wider range of values, comment out and use Patterns with special characters
arrSearchRegExp.push( contain );
}
let searchWord;
for( let i = 0; i < arrInputString.length; i++ ){
searchWord = "notExist";
let arrTsvLine = arrInputString[i].split("\t");
for( let j = 0; j < arrSearchRegExp.length; j++ ){
if( arrSearchRegExp[j].test( arrTsvLine[ numTargetColId ] ) ){
searchWord = "exists";
break;
}
}
if( searchWord === "notExist" ){
outputString += arrInputString[i];
outputString += "\n";
}
}
outputString = outputString.replace(/[\n]*$/, "");
//// == Data Updating / ワークフローデータへの代入 ==
if( outputString === "" ){
engine.log( " AutomatedTask DataUpdating: Output Text empty" );
}
engine.setDataByNumber( dataIdC, outputString );
} //////// END "main()" /////////////////////////////////////////////////////////////////
Download
2021-07-09 (C) Questetra, Inc. (MIT License)
https://support.questetra.com/ja/addons/tsv-string-filter-out-by-text-2021/
Addonファイルのインポートは Professional でのみご利用いただけます
Notes
- カンマを含む検索語は指定できません
- 検索テキスト設定の特殊文字に意味はありません(リテラル文字列)
Capture
See also
Related