【发布时间】:2015-04-15 07:22:15
【问题描述】:
我以前做过这篇文章,但我确实得到了期待已久的帮助。让我借此机会尽量说清楚。 1. 我有这个谷歌表格 ID 1UJVQGlCpsxtqN-IkRFFgHEnzNaq-HQDaiw-hte5j3LY
Email Address Name Mark1 Mark2 Mark3 Remark Email Sent
abc@gmail.com John 34 21 34 Fair
def@gmail.com Sam 23 9 78 fair
- 模板文档。 ID 15SP7mxyKYF6ptuRfrudNsvtJuezMTOBUL_cRCFbBIcI
亲爱的键名
标记1 标记2 标记3 keyMark_1 keyMark_2 keyMark_3
备注 关键备注
-
代码。
// Email_Sent 写在 G 列中,用于发送电子邮件的行 // 已经发送成功。 var EMAIL_SENT = "EMAIL_SENT";
function sendEmails2() { var sheet = SpreadsheetApp.getActiveSheet(); var startRow = 2; // First row of data to process var numRows = 5; // Number of rows to process var dataRange = sheet.getRange(startRow, 1, numRows, 6) var ss = SpreadsheetApp.openById('1UJVQGlCpsxtqN-IkRFFgHEnzNaq-HQDaiw-hte5j3LY'); var sheet = ss.getSheetByName('Email Spreadsheet Data'); //var dataRange = sheet.getRange(2, 1, sheet.getLastRow(), sheet.getLastColumn()); var copyId = DocsList.getFileById('15SP7mxyKYF6ptuRfrudNsvtJuezMTOBUL_cRCFbBIcI') .makeCopy(name) .getId(); // Fetch values for each row in the Range. var data = dataRange.getValues(); for (var i = 0; i < data.length; ++i){ //for (var j = 0; j < startRow; ++j) { var row = data[i]; var emailAddress = row[0]; // First column var name = row[1]; // Second column var Mark1 = row[2]; // Third column var Mark2 = row[3]; // Fourth column var Mark3 = row[4]; // var remark = row[5]; // var emailSent = row[6]; // var static_copy = ('goins@mu.ac.ke'); // Open the temporary document var copyDoc = DocumentApp.openById(copyId); // Get the document’s body section var copyBody = copyDoc.getActiveSection(); // Replace place holder keys,in google doc template. Create a blank document with the number "1,2,3....", and it will replace this text with value copyBody.replaceText('keyName', name) copyBody.replaceText('keyMark_1', Mark1) copyBody.replaceText('keyMark_2', Mark2) copyBody.replaceText('keyMark_3', Mark3) copyBody.replaceText('keyRemark', remark) // Save and close the temporary document copyDoc.saveAndClose(); // Convert temporary document to PDF var pdf = DocsList.getFileById(copyId).getAs("application/pdf"); // Attach PDF and send the email var subject = "Profile"; var body = "<HTML><BODY>" + "Dear "+ name +",<br>" + "<br>" + " Regards <br>" + "<br>" + "</HTML></BODY>"; MailApp.sendEmail(emailAddress, subject, body, {htmlBody: body, attachments: pdf, cc: static_copy,}); //if (emailSent != EMAIL_SENT) { // Prevents sending duplicates //var subject = "Sending emails from a Spreadsheet"; // MailApp.sendEmail(emailAddress, subject, {htmlBody: body, attachments: pdf, cc: static_copy,}); //sheet.getRange(startRow + i, 6).setValue(EMAIL_SENT); // Delete temp file DocsList.getFileById(copyId).setTrashed(true); } // Make sure the cell is updated right away in case the script is interrupted SpreadsheetApp.flush(); }
当我执行上述脚本时,带有 John 标记的电子邮件附件会同时发送到 adc@gmail.com 和 efg@gmail.com。 我需要您的帮助来解决这个问题,以便我能够向每个学生发送一个包含自己结果的电子邮件附件。
请帮助
萨米。
【问题讨论】:
-
您正在删除文件(副本 ID)并重新打开它 - 这怎么可能?
-
@Ark 我在 DocsList.getFileById(copyId).setTrashed(true 以便能够填写临时文档。评论该行后,它会向所有邮件发送重复的附件...
-
抱歉,问题过于本地化。这是一个算法问题,而不是真正的应用脚本问题。
-
@Zig Mandel 我同意这个问题的新人,我可以使用你的帮助
-
这个问题让我想起了this one
标签: google-apps-script google-sheets