【发布时间】:2012-12-08 14:34:11
【问题描述】:
我在 Google 电子表格上编写了脚本,以便在修改电子表格或添加任何数据时发送电子邮件。电子邮件触发器正在工作,但每当在下一行输入任何数据时,它也会将电子邮件发送到以前的电子邮件地址。
请提出解决方案
下面是写好的脚本:
function onEdit(e) {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 1; // Number of rows to process
var dataRange = sheet.getRange(startRow, 1 , numRows,3) // Fetch the range of cells A2:B3
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (i in data) {
var row = data[i];
var emailAddress = row[2]; // First column
var message = row[0] + "requested" + row [1]; // Second column
var subject = "Sending emails from a Spreadsheet";
MailApp.sendEmail(emailAddress, subject, message);
}
}
【问题讨论】:
-
OnEdit 不是要走的路。如果 onEdit 触发器是从电子表格中的更改触发的,则它不会发送电子邮件,只有在从代码编辑器运行时才会发送电子邮件。此外,如果它确实发送了电子邮件,它会为您更改的每个单元格发送一封电子邮件。如果行中输入了三个项目,则每行至少尝试三次。您可能应该创建一个按钮或菜单项,可以在完成该行后单击以发送该行的电子邮件。
标签: google-apps-script google-sheets google-spreadsheet-api