Reputation: 171
My following code is working fine but the issue is, I want to add a third condition range.getCell(i, 3) value is not an email address, then the corresponding row will be deleted. How to fix it?
var spreadsheet = SpreadsheetApp.getActive();
var dashboard = spreadsheet.getSheetByName("Dashboard");
var sheetName = dashboard.getRange("A4").getValue();
//retrieve the start date to use as desired
var startDate = dashboard.getRange("B4").getDisplayValue();
var endDate = dashboard.getRange("C4").getDisplayValue();
var sheet = spreadsheet.getSheetByName(sheetName);
//chose the range within the specified dates, for this first locate the date column
var startRow = 2;
var dateColumn = sheet.getRange(startRow,1,sheet.getLastRow(), 1);
var dates = dateColumn.getDisplayValues().flat();
var firstRow = dates.indexOf(startDate)+startRow;
var lastRow = dates.lastIndexOf(endDate)+startRow;
//now get the range between (and including) those rows
var range = sheet.getRange(firstRow, 1, lastRow-firstRow+1, sheet.getLastColumn());
var deleteRows = 0;
for (var i = range.getHeight(); i >= 1; i--){
if(range.getCell(i, 1).isBlank() || range.getCell(i, 3).isBlank()
**|| range.getCell(i, 3) IS NOT AN EMAIL Address){**
sheet.deleteRow(range.getCell(i, 1).getRow());
deleteRows++;
}
else{
if(range.getCell(i, 6).isBlank()){
range.getCell(i, 6).setValue(sheetName);
range.getCell(i, 1).setNumberFormat("yyyy-mm-dd");
}
}
}
Upvotes: 1
Views: 78
Reputation: 27390
Since I don't have access to your sheet, it is really difficult for me to undestand if the rest of the code works.
But I managed to replicate part of your example and created the following code snippet which you can use instead of your code after range
:
var data = sheet.getRange(firstRow, 1, sheet.getLastRow()-firstRow+1, sheet.getLastColumn()).getValues();
var deleteRows = 0;
for (var i = data.length-1; i >= 1; i--){
if(data[i][0] == '' || data[i][2] == '' || !data[i][2].toString().includes('@')){
sheet.deleteRow(i+firstRow)
deleteRows++;
}
else if(data[i][5] == '') {
sheet.getRange(i+firstRow,6).setValue('sheetName');
sheet.getRange(i+firstRow,1).setNumberFormat("yyyy-mm-dd");
}
}
Upvotes: 1