Reputation: 29878
So I have this script which deletes rows if it regex matches one value ('/exe' here). I would like to pass on an entire column (A2:A) of values from another sheet (lets say Sheet1) to regex variable so that all the values are compared and deleted in Sheet2. Anyhelp would be apprecaiated.
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();
};
Upvotes: 1
Views: 510
Reputation: 10776
You can concatenate them in a regexy way. within delete rows you can add
var pattern = "(" + ss
.getSheetByName("Sheet1")
.getDataRange()
.getValues()
.map(function(row) {return row[0];})
.filter(function(row, rowI) {return rowI > 0 && row !== "";})
.join("|") + ")";
Which gets the data from Sheet1,, extracts the first column as an Array, removes the header and empty rows and concatenates them with |, finally we wrap it in parens.
Then you can var re = new RegExp(pattern)
;
Upvotes: 1