【问题标题】:How to fix non-repeating sent emails from Google Sheet如何修复从 Google 表格发送的非重复电子邮件
【发布时间】:2019-08-12 00:45:19
【问题描述】:

我正在尝试从谷歌表格发送电子邮件,并在发送时填充一列,一旦发送并填充该列,我希望它注册电子邮件已发送,然后不再向该人发送电子邮件

这是表格: https://docs.google.com/spreadsheets/d/1f6qUjGYHZtRRGCbyh5oNzM7o64B-wlkrTpB1ac64I2U/edit?usp=sharing

我尝试了不同的代码,当我使用示例代码时,它们似乎无法正常工作

var EMAIL_SENT = 'EMAIL_SENT';
function sendEmailsZ() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 4; 
  var numRows = 2; 
  var dataRange = sheet.getRange("J4:K5");
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[0]; 
    var message = row[1]; 
    var emailSent = row[2]; 
    if (emailSent != EMAIL_SENT) { 
      var subject = 'Non Repeat B08 - populates correct column but doesnt prevent re-sending';
      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(startRow + i, 12).setValue(EMAIL_SENT);
      SpreadsheetApp.flush();
    }
  }
}

这会将所需的消息发送到所需的电子邮件地址,并在正确的位置填充“已发送电子邮件”列,但是当我再次运行脚本时,它会忽略“EMAIL_SENT”命令并重新发送电子邮件,尽管该列已被填充在

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    试试这个:

    function sendEmailsZ() {
      var sheet = SpreadsheetApp.getActiveSheet();
      var startRow = 4; 
      var numRows = 2; 
      var dataRange = sheet.getRange(4,1,sheet.getLastRow(),sheet.getLastColumn());
      var data = dataRange.getValues();
      for (var i = 0; i < data.length; ++i) {
        var row = data[i];
        var emailAddress = row[0]; 
        var message = row[1]; 
        var emailSent = row[2];//You were not getting this data because your range was incorrect 
         var subject = 'Non Repeat B08 - populates correct column but doesnt prevent re-sending';
        if (emailAddress && message && subject && emailSent != 'EMAIL_SENT') { 
          MailApp.sendEmail(emailAddress, subject, message);
          sheet.getRange(startRow + i, 12).setValue('EMAIL_SENT');
        }
      }
    }
    

    【讨论】:

    • 啊哈!谢谢!然后我尝试将 L5 更改为 L100,但大概是因为除了 J5 之外没有电子邮件地址,脚本无法运行。有没有办法克服这个问题?本质上,电子邮件列会被超时填充,我不想在每次更新新电子邮件时都编辑脚本
    • 当然,我会看看你的电子表格并回复你
    • 再次感谢 Cooper,它产生了一个错误,显示“发送电子邮件失败:没有收件人(第 15 行,文件“文件名”)。该行以前是 var dataRange = sheet.getRange("J4: L5");
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 2014-09-14
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多