Google apps script 如果单元格值不是Google应用程序脚本中的电子邮件地址,如何添加条件

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();

我的以下代码工作正常,但问题是,我想添加第三个条件范围。getCell(I,3)值不是电子邮件地址,那么相应的行将被删除。如何修复它

  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请提供您的工作表副本。删除所有敏感信息,并给我举几个例子。对不起,我不知道为什么它不起作用。现在好了。谢谢。请查看我的最新帖子