【发布时间】:2014-09-25 16:14:57
【问题描述】:
我是编码初学者,我尝试了很多东西(解决方案),但没有运行脚本。 我正在使用现有的 sendEmail 脚本(见下文)将电子邮件发送到新的电子表格条目。
https://docs.google.com/spreadsheet
我没有使用 Google 表单。我正在从另一个电子表格表中复制所需的信息。使用 onEdit 触发器,脚本将向新条目发送电子邮件。
我遇到的问题是脚本会向电子表格的每一行发送一封电子邮件,即使该信息已经发送。
我尝试了一些解决方法,虽然这些方法在论坛中被命名,但对我的情况没有任何帮助。我不想只向最后一个条目发送电子邮件。我想向不同数量的新条目发送电子邮件,如果可能的话,这应该由 onEdit 事件触发。 我希望,有人能尽快帮助我……
var EMAIL_SENT = "EMAIL_SENT";
function sendEmails(onlyLast) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var dataSheet = ss.getSheets()[0];
var startRow = 2;
var lastRow = datasheet.getlastRow()-1;
if (onlyLast)
startRow = endRow;
var dataRange = dataSheet.getRange(startRow, 1, lastRow, 4);
var templateSheet = ss.getSheets()[1];
var emailTemplate = templateSheet.getRange("A1").getValue();
// Create one JavaScript object per row of data.
var objects = getRowsData(dataSheet, dataRange);
// For every row object, create a personalized email from a template and send
// it to the appropriate person.
for (var i = 0; i < objects.length; ++i) {
// Get a row object
var rowData = objects[i];
var file = DriveApp.getFileById('');
// Generate a personalized email.
// Given a template string, replace markers (for instance ${"First Name"}) with
// the corresponding value in a row object (for instance rowData.firstName).
var emailText = fillInTemplateFromObject(emailTemplate, rowData);
var emailSubject = "Tutorial: Simple Mail Merge";
var emailSent;
if (emailSent != EMAIL_SENT) {
var subject = "Tutorial: Simple Mail Merge";
MailApp.sendEmail(rowData.emailAddress, emailSubject, emailText, {attachments:[file.getAs(MimeType.PDF)]});
dataSheet.getRange(startRow + i, 5).setValue(EMAIL_SENT);
SpreadsheetApp.flush();
}
}
}
【问题讨论】:
-
从不共享具有编辑权限的工作表,即使在这个论坛上,人们有时也会有不良习惯,并且会在工作表中填写奇怪的内容;-) 我将其设置为仅查看,任何人都可以根据需要制作副本进一步测试。
标签: google-apps-script google-sheets google-docs google-apps