只发送电子邮件到新的google表单提交



我是Google apps脚本的新手。我写了一个脚本来发送电子邮件,当有一个新的提交从谷歌表单使用数据和模板从电子表格。但是,它不仅会向新提交的内容发送电子邮件,还会向所有以前提交的内容发送电子邮件。整个剧本很长,所以我只抄了一小部分。有什么办法能修好它吗?

这是电子表格的链接https://docs.google.com/spreadsheets/d/1fhuwEndIS3khg3W19jpQnBAaCp_MMrD_bfATrdf2-4I/edit?usp=sharing

谢谢。

function sendEmail() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Calculation");
var lr = ss.getLastRow();
for (var i = 3; i<=lr;i++){
var currentEmail = ss.getRange(i, 1).getValue();
var currentName = ss.getRange(i, 3).getValue();
var currentScore1 = ss.getRange(i, 4).getValue();

MailApp.sendEmail(
currentEmail,
subjectline,
"HTML",
{ htmlBody: messageBody }
);
}
}

不要从电子表格中读取值,而是利用表单提交事件对象。这个事件对象有两个属性,包括表单提交值,一个是表单提交值的数组,顺序与表单列相同,另一个是每个问题的属性,每个问题都有一个值的数组。引用https://developers.google.com/apps-script/guides/triggers/events

这显示了需要对脚本进行的更改:

function sendEmail(e) {
var currentEmail = e.values[0];
var currentName = e.values[2];
var currentScore1 = e.values[3];

MailApp.sendEmail(
currentEmail,
subjectline,
"HTML",
{ htmlBody: messageBody }
);
}

注意:为了使事件对象工作,该函数应该由Google Sheets表单提交触发器调用。

相关的

  • Google电子表格中的事件值和偏移量
  • 如何发送电子邮件只到最后的谷歌表单提交?

相关内容

  • 没有找到相关文章

最新更新