ここには非常に経験の浅いコーダーがいます。正規表現を使用して、検索などの単語制限内で、互いに10語以内の単語を検索するスクリプトがword1
ありword2
ます。次に、結果をスプレッドシートに印刷します。ただし、10語以内にない場合は、10語以内で検索するなど、除外基準をスクリプトに含める方法を見つけようword1
としています。ネガティブルックアヘッドを使用して除外基準を含めることができたと思いますが、含めると、単語制限が機能しなくなります。これが私のスクリプトです:word2
word3
function regexwithsheetpop() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var historySheet = ss.getSheetByName('Sheet1');
var resultsSheet = ss.getSheetByName('Results1');
var totalRowsWithData = historySheet.getDataRange().getNumRows();
var data = historySheet.getRange(1, 1, totalRowsWithData, 3).getValues();
var regexp = /^((?!dispute).)*([\W*(the)\s+(\w+\s+){0,10}(account)])$|^((?!dispute).)*([(account)\s+(\w+\s+){0,10}(the)])$/i;
var result = [];
for (var i = 0; i < data.length; i += 1) {
var row = data[i];
var column = row[0];
if (regexp.exec(column) !== null) {
result.push(row);
}
}
if (result.length > 0) {
var resultsSheetDataRows = resultsSheet.getDataRange().getNumRows();
resultsSheetDataRows = resultsSheetDataRows === 1 ? resultsSheetDataRows : resultsSheetDataRows + 1;
var resultsSheetRange = resultsSheet.getRange(resultsSheetDataRows, 1, result.length, 3);
resultsSheetRange.setValues(result);
}
}
除外基準のない私の作業コードは次のとおりです。
function regexwithsheetpop() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var historySheet = ss.getSheetByName('Sheet1');
var resultsSheet = ss.getSheetByName('run,use,card');
var totalRowsWithData = historySheet.getDataRange().getNumRows();
var data = historySheet.getRange(1, 1, totalRowsWithData, 3).getValues();
var regexp = /\W*(account)\W*\s+(\w+\s+){0,10}(the)|(the)\s+(\w+\s+){0,10}(account)/i;
var result = [];
for (var i = 0; i < data.length; i += 1) {
var row = data[i];
var column = row[0];
if (regexp.exec(column) !== null) {
result.push(row); }}
if (result.length > 0) {
var resultsSheetDataRows = resultsSheet.getDataRange().getNumRows();
resultsSheetDataRows = resultsSheetDataRows === 1 ? resultsSheetDataRows : resultsSheetDataRows + 1;
var resultsSheetRange = resultsSheet.getRange(resultsSheetDataRows, 1, result.length, 3);
resultsSheetRange.setValues(result);}}
特定の単語がセルに含まれているかどうかだけを知りたい場合は、正規表現は必要ありません。
サンプル:
if(column.indexOf("dispute")!=-1){
Logger.log("Column contains dispute");
}
else if (regexp.exec(column) !== null) {
result.push(row);
}
これにより、「論争」をregexp
定義に組み込む必要がなくなります。
それをあなたのコードに適用する:
function regexwithsheetpop() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var historySheet = ss.getSheetByName('Sheet1');
var resultsSheet = ss.getSheetByName('Results1'); //mind the name
var totalRowsWithData = historySheet.getDataRange().getNumRows();
var data = historySheet.getRange(1, 1, totalRowsWithData, 3).getValues();
var regexp = /\W*(account)\W*\s+(\w+\s+){0,10}(the)|(the)\s+(\w+\s+){0,10}(account)/i;
var result = [];
for (var i = 0; i < data.length; i += 1) {
var row = data[i];
var column = row[0];
if(column.indexOf("dispute")!=-1){
Logger.log("Column in row "+(i+1)+" contains dispute");
} else if (regexp.exec(column) !== null) {
result.push(row); }
}
if (result.length > 0) {
var resultsSheetDataRows = resultsSheet.getDataRange().getNumRows();
resultsSheetDataRows = resultsSheetDataRows === 1 ? resultsSheetDataRows : resultsSheetDataRows + 1;
var resultsSheetRange = resultsSheet.getRange(resultsSheetDataRows, 1, result.length, 3);
resultsSheetRange.setValues(result);
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加