特定列包含数据时发送的电子邮件运行错误的脚本

时间:2017-09-07 20:55:08

标签: google-apps-script

我有下面的脚本正在运行,但标记了每行(全部1000)的“Email_Sent”列,我希望它只发送一封电子邮件,如果列A,B或C有一个条目。 (如果有人在特定列中标记为“是”,则会从第一个工作表中复制此选项),并且仅当Sent_Email列也为空时才会复制。

        function sendEmails()
        {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
 ss.setActiveSheet(ss.getSheetByName("Email"));
 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 emailAddress = rowData[1];
var recipient = rowData[0];
var message1 = rowData[3];
var message2 = rowData[4];
var message3 = rowData[5];
var message4 = rowData[6];
var message5 = rowData[7];
var emailSent = rowData[9];
var message = 'Hi ' + recipient + ',\n\n' + message1 + ' ' + message2 + 
 ',\n\n' + message3 + ',\n' + message4 + ',\n' + message5;
var subject = 'Medical Questionairre Check';
if (emailSent != 'EMAIL_SENT' && MailApp.getRemainingDailyQuota()>0 && 
 emailAddress && subject && message) 
{       
  MailApp.sendEmail(emailAddress, subject, message);
  sheet.getRange(i+1, 9).setValue('EMAIL_SENT');// Make sure the cell is 
 updated right away in case the script is interrupted
 }
 }
 } 

以下是电子表格的链接。 https://docs.google.com/spreadsheets/d/1SOPiXhU3KWHpHyZEiDUSk8m5qzO5CyALWio6doQvJ4Q/edit?usp=sharing

1 个答案:

答案 0 :(得分:0)

简单修复

只需更改emailSent = rowData [25]而不是rowData [9]

function sendEmails()
{
  var ss=SpreadsheetApp.getActive();
  var sheet=ss.getSheetByName('Sheet2');
  var dataRange=sheet.getDataRange();
  var data=dataRange.getValues();
  for (var i=1;i<data.length;++i) 
  {
     var rowData = data[i];
     var emailAddress = rowData[1];
     var recipient = rowData[0];
     var message1 = rowData[3];
     var message2 = rowData[4];
     var message3 = rowData[5];
     var message4 = rowData[6];
     var message5 = rowData[7];
     var emailSent = rowData[25];//Change from 9 to 25
     var message = 'Hi ' + recipient + ',\n\n' + message1 + ' ' + message2 + ',\n\n' + message3 + ',\n' + message4 + ',\n' + message5;
     var subject = 'Medical Questionairre Check';
     var rdq=MailApp.getRemainingDailyQuota();

    if (!emailSent && rdq>0 && emailAddress && subject && message)
    {       
      MailApp.sendEmail(emailAddress, subject, message)
      //Logger.log('emailAddress: %s subject: %s message: %s emailSent: %s',emailAddress,subject,message,emailSent);
      sheet.getRange(i+1, 26).setValue('EMAIL_SENT');
     }
   }
} 

执行后的电子表格:

enter image description here