Google Apps脚本:使用cc和/或密件抄送来自工作表的sendEmail,并避免将EMAIL_SENT返回到工作表

时间:2018-03-29 20:25:22

标签: google-apps-script google-sheets

我有一个脚本,可以将电子邮件发送到工作表上的地址,然后在工作表中的一列中返回一个条目,该条目显示为EMAIL_SENT。

function sendEmail()
{
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2;
var numRows = sheet.getLastRow();
var EMAIL_SENT = "EMAIL_SENT";
var dataRange = sheet.getRange(startRow, 1, numRows, 2000)
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) 
{
var row = data[i];
var name = row [0].split(",")[1];
var emailAddress = row [2]; 
var Setting = Utilities.formatDate(new Date(row [2]), "CST", "MM-dd-YYYY");
var Place = row [4];
var emailSent = row[5];
if (emailSent != "EMAIL_SENT")
{  
var message = "message body";
var subject = "Email to Client";

MailApp.sendEmail
(emailAddress, subject, message,
{htmlBody:message, 
cc:'internalemail@internalemail.com'});

sheet.getRange(startRow + i, 6).setValue(EMAIL_SENT);
SpreadsheetApp.flush();  

}}}

从脚本中可以看出,我还希望将电子邮件的副本抄送到内部电子邮件地址,但是要避免将EMAIL_SENT返回到此内部电子邮件的工作表。

上面写的脚本发送了两封电子邮件,但它似乎没有将cc&#d电子邮件发送到内部电子邮件地址,并且它返回了一个&#39; EMAIL_SENT&#39;到源表中的列。

1 个答案:

答案 0 :(得分:1)

我评论了你的一些代码并做了一些笔记。如果没有看到你正在使用的工作表,找出错误的位置有点困难,但这应该有效。

function sendEmail() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var numRows = sheet.getLastRow();
  var EMAIL_SENT = "EMAIL_SENT";
  var dataRange = sheet.getRange(startRow, 1, numRows, 5/*2000*/); //Confused why you were selecting 2000 columns.
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; i++) { //switched to i++ instead of ++i
    //var row = data[i]; This isn't needed
    var name = data[i][0]; //row [0].split(",")[1];
    var emailAddress = data[i][1]; //row [2]; 
    var Setting = Utilities.formatDate(new Date(/*row [2]*/), "CST", "MM-dd-YYYY"); //Looks like you were creating a Date from the email address (row[2])...?
    var Place = data[i][3];
    var emailSent = data[i][4];
    if (emailSent != "EMAIL_SENT" && emailAddress != "") {
      var message = "message body";
      var subject = "Email to Client";
      MailApp.sendEmail(emailAddress, subject, message,{htmlBody:message, cc:'internalemail@internalemail.com'});
      sheet.getRange(startRow + i, 5).setValue(EMAIL_SENT);
      SpreadsheetApp.flush();  
    }
  }
}

以下是我如何组织数据,但您显然可以适应您的需求。设置dataRange时,我抓了5列,因为数据只扩展到E列。 enter image description here