通过单元格值更改触发电子邮件脚本

时间:2020-01-10 11:44:05

标签: javascript google-sheets google-sheets-formula

我正在使用Google Forms运行客户数据库。当客户致电给我时,我正在编辑相同的Google表单条目。因此,我想了解这种更改或特定单元格的输入如何触发将在此处发布的邮件脚本。在更改时,它仅应触发一次。感谢您的提示。

编辑:

我现在添加了“ if”,并将触发器设置为“表单提交”。现在,如果我要在Google表单中更改值,请将该值设置为“测试”,并向该表单发送一封电子邮件。但是,如果表单中有多个电子邮件地址,该如何为每个条目指定此地址。还会发送不两次吗?

function sendArticleCountEmails() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.setActiveSheet(ss.getSheetByName("Test"));
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getRange("A2:F4");
  var data = dataRange.getValues();
  var currentValue = sheet.getRange("J2").getValue();
  if (currentValue == ("test")) 
  for (i in data) {
    var rowData = data[i];
    var emailAddress = rowData[1];
    var recipient = rowData[0];
    var message1 = rowData[2];
    var message2 = rowData[3];
    var parameter2 = rowData[4];
    var message3 = rowData[5];
    var message = 'Dear ' + recipient + ',\n\n' + message1 + ' ' + message2 + ' ' + parameter2 + ' ' + message3;
    var subject = 'Your article count for this month';
    MailApp.sendEmail(emailAddress, subject, message);
  }
}

1 个答案:

答案 0 :(得分:2)

答案:

无法发送有关Google表格中单元格更改的电子邮件。但是,您可以在表单提交时发送电子邮件。

简单触发器:

根据简单触发器上的Google Apps脚本文档:

当用户更改电子表格中任何单元格的值时,onEdit(e)触发器将自动运行。

但是,触发器也有某些限制:

他们无法访问需要授权的服务。例如,简单触发器不能发送电子邮件,因为Gmail服务需要授权,但是简单触发器可以使用语言服务翻译短语,该匿名服务。

提交表格:

您仍然可以使用Apps脚本中的GmailApp库发送电子邮件,并指定多个发送给。如您的示例表中所示,如果电子邮件地址全部在B列中:

var emails = []
var addresses = SpreadsheetApp.getActiveSpreadsheet().getRange('B2:B').getValues();
var list = [];
for (var i = 0; i < addresses.length; i++) {
  if (addresses[i] == "") {
    break;
  }
  if (list.indexOf(addresses[i][0]) > -1) {
  }
  else {
    list.push(addresses[i][0]);
  }
}

然后编辑:

var emailAddress = rowData[1];

成为:

var emailAddress = list[0];

这将把电子邮件发送到列出的所有电子邮件地址,尽管跳过工作表中的重复项。

我希望这对您有所帮助!

参考文献: