0

因此,如果該正則表達式匹配一個值(此處爲'/ exe'),那麼該腳本將刪除行。我希望將另一個表格中的整個列(A2:A)的值傳遞給regex變量,以便在Sheet2中比較和刪除所有值。 Anyhelp將被曝光。將值的列範圍傳遞給Apps腳本中的變量

SAMPLE SHEET HERE

function deleteRows() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("Sheet2"); 
    var rows = sheet.getDataRange(); 
    var numRows = rows.getNumRows(); 
    var values = rows.getValues(); 

    var toDelete = []; 

var re = new RegExp('/exe'); 
    for (var row = 0; row < values.length; row++) { 
    for(var column = 0;column<values[row].length;column++){ 
    if (re.exec(values[row][column])){ 
    toDelete.push(row); } } } 


    for(var deleteRow = toDelete.length-1; deleteRow >= 0;deleteRow--){ 
    sheet.deleteRow(toDelete[deleteRow]+1); 
    } 

    SpreadsheetApp.flush(); 
}; 

回答

1

您可以在regexy的方式將它們連接起來。 刪除的行內可以添加

var pattern = "(" + ss 
    .getSheetByName("Sheet1") 
    .getDataRange() 
    .getValues() 
    .map(function(row) {return row[0];}) 
    .filter(function(row, rowI) {return rowI > 0 && row !== "";}) 
    .join("|") + ")"; 

後者從Sheet1中的數據來看,提取第一列作爲一個數組,去除頭和空行,並與連接它們|,最後我們把它包在括號。

然後你可以var re = new RegExp(pattern);

+0

哇..完美的作品:) – rockinfreakshow

+0

什麼是過濾器函數中的rowI? – Cooper

+0

row是當前元素,rowI是數組中的索引(就好像您正在執行for(var rowI = 0; ...)') –