Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何避免在更新单元格中的值后发送重复的电子邮件:Javascript_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

如何避免在更新单元格中的值后发送重复的电子邮件:Javascript

如何避免在更新单元格中的值后发送重复的电子邮件:Javascript,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我试图从发送到电子邮件的谷歌表单中获取值,并更新单元格中的值。这很有效 但是,当我再次运行代码时,它会从初始行中选择值已更新为3的行(以避免重复电子邮件) 我希望它忽略之前发送的行,只选择列41未设置为3的行。我在这里做错了什么 function sendEmails() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var sheet = Spreadsheet

我试图从发送到电子邮件的谷歌表单中获取值,并更新单元格中的值。这很有效

但是,当我再次运行代码时,它会从初始行中选择值已更新为3的行(以避免重复电子邮件)

我希望它忽略之前发送的行,只选择列41未设置为3的行。我在这里做错了什么

function sendEmails() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet(); 
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getDataRange();
  var data = dataRange.getValues();
  for (var i = 1; i < data.length; ++i) {
    var rowData = data[i];
    var sender = rowData[1];
    var name = rowData[2];
    var client = rowData[3];
    var sdate = rowData[4];
    var edate = rowData[5];
    var loe = rowData[7];
    var emailSent = rowData[41];
    var emailAddress = 'test@example.com';
    var message = 'Email:' + sender + ',\n\n' + name + ' ' + client + ',\n\n' + sdate + ',\n\n' + edate + ',\n\n' + loe;
    var subject = 'Alert- New Project';
    if (emailSent !== '3' && MailApp.getRemainingDailyQuota()>0 && emailAddress && subject && message) {       
      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(i+1, 41).setValue('3');
    }
  }
}
函数sendEmails(){ var ss=SpreadsheetApp.getActiveSpreadsheet(); var sheet=ss.getActiveSheet(); var sheet=SpreadsheetApp.getActiveSheet(); var dataRange=sheet.getDataRange(); var data=dataRange.getValues(); 对于(变量i=1;i0&&emailAddress&&subject&&message){ MailApp.sendmail(电子邮件地址、主题、消息); 表.getRange(i+1,41).setValue('3'); } } } 试试这个:

第[41]行是第42列

列索引从一开始

数组索引从零开始

   function sendEmails() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getActiveSheet(); 
      var dataRange = sheet.getDataRange();
      var data = dataRange.getValues();
      for (var i = 1; i < data.length; ++i) {//this skips the first row in the data array which is often a header.
        var rowData = data[i];
        var sender = rowData[1];//column2
        var name = rowData[2];//column3
        var client = rowData[3];//column4
        var sdate = rowData[4];//column5
        var edate = rowData[5];//column6
        var loe = rowData[7];//column8
        var emailSent = rowData[40];//Changed this from 41 to 40.Array index 41 is column 42
        var emailAddress = 'test@example.com';
        var message = 'Email:' + sender + ',\n\n' + name + ' ' + client + ',\n\n' + sdate + ',\n\n' + edate + ',\n\n' + loe;
        var subject = 'Alert- New Project';
        if (emailSent !== '3' && MailApp.getRemainingDailyQuota()>0 && emailAddress && subject && message) {       
          MailApp.sendEmail(emailAddress, subject, message);
          sheet.getRange(i+1, 41).setValue('3');//the 41 is a column index not an array index
        }
      }
    }
函数sendEmails(){ var ss=SpreadsheetApp.getActiveSpreadsheet(); var sheet=ss.getActiveSheet(); var dataRange=sheet.getDataRange(); var data=dataRange.getValues(); 对于(var i=1;i0&&emailAddress&&subject&&message){ MailApp.sendmail(电子邮件地址、主题、消息); sheet.getRange(i+1,41).setValue('3');//41是一个列索引而不是数组索引 } } }
尝试添加
Logger.log(emailSent的类型)var emailSent
后,将代码>添加到您的代码中。这会在您的日志中返回什么?日志可以在
查看>日志中找到。非常感谢,@ross。我真的让它起作用了。