Google apps script 如果单元格值不是Google应用程序脚本中的电子邮件地址,如何添加条件
我的以下代码工作正常,但问题是,我想添加第三个条件范围。getCell(I,3)值不是电子邮件地址,那么相应的行将被删除。如何修复它Google apps script 如果单元格值不是Google应用程序脚本中的电子邮件地址,如何添加条件,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我的以下代码工作正常,但问题是,我想添加第三个条件范围。getCell(I,3)值不是电子邮件地址,那么相应的行将被删除。如何修复它 var spreadsheet = SpreadsheetApp.getActive(); var dashboard = spreadsheet.getSheetByName("Dashboard"); var sheetName = dashboard.getRange("A4").getValue();
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");
}
}
}
由于我无法访问您的工作表,因此如果其余代码正常工作,我真的很难理解 但是我成功地复制了您示例的一部分,并创建了以下代码片段,您可以在
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");
}
}
我尝试使用这一行,但不起作用:if(range.getCell(I,1).isBlank()| range.getCell(I,3).isBlank()|!(range.getCell(I,3).getValue().indexOf(“@”)>-1)){}什么是
range
。你能定义它吗?@Marios请在修改后的帖子中检查范围,因为它需要更多的行来明确范围定义,我每分钟检查了一次,第三个条件[!data[i][2]。includes('@')]不起作用。请注意,大多数时间第3列,即data[i][2]包含像这样的地理位置23.7896641,89.4224548类型值。它不包含“@”,因此需要删除这些行。Is indexOf()或includes()适用于整数值,因为地理位置可能是整数Ithink@TamjidTaha请提供您的工作表副本。删除所有敏感信息,并给我举几个例子。对不起,我不知道为什么它不起作用。现在好了。谢谢。请查看我的最新帖子