我写了一个谷歌应用程序电子表格脚本,该脚本应该从我的驱动器中获取pdf并将其作为附件发送给许多人,每个人都要通过电子邮件发送一个独特的文件。数据位于电子表格中。第一列包含recepient的电子邮件地址,第二列包含必须附加的pdf文件名,第三列包含该人的姓名。
function sendPDFs() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = sheet.getDataRange().getLastRow() -1; // Number of rows to process
// Fetch the range of cells A2:C3
var nummails = 0
var numdrive = 0
var checkCol = 4
var dataRange = sheet.getRange(startRow, 1, numRows, 3)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (i in data) {
var row = data[i];
var emailAddress = row[0]; // First column
var subject = "Some subject";
var body = 'Dear ' + row[2] + '\n\nPlease find your ' + subject + ' \n\nThank you \n\n XYZ'
var attachment = row[1]; // Second column.
var files = DriveApp.getFilesByName(attachment); // Get all files with name.
var blobs = []; // Array for attachment.
// Move files into blobs
while (files.hasNext()) {
var file = files.next();
blobs.push(file.getAs("application/PDF"));
}
// dont sent to invalid email ids or those without email ids
if (emailAddress == "" || emailAddress.indexOf("@") <= -1){
sheet.getRange(i+2, checkCol+1).setValue('Not Emailed')
numdrive = numdrive+1
}
else{
Utilities.sleep(1000)
MailApp.sendEmail(emailAddress, subject, body, {attachments: blobs, name: "XYZ" })
sheet.getRange(i+2, checkCol+1).setValue('Emailed')
nummails = nummails +1
}
}
Browser.msgBox( nummails+ " Mails sent successfully.")
}
我在序列化继续时得到错误意外异常。但是,会发送电子邮件。看起来代码有效,但我不知道为什么错误。我已经看到现有的线程具有相同的错误,但他们提供了帮助。
如何解决此问题,请提供任何帮助。
答案 0 :(得分:0)
看起来你的主循环没有达到预期的效果:循环中i的值是错误的。我改变了循环定义如下
for (var i=0 ; i<data.length ; ++i) {
请试一试,让我们知道会发生什么。
答案 1 :(得分:0)
首先,查看执行记录&#39;在脚本编辑器菜单中。你可以在那里找到错误的原因。
每次运行脚本时,Google Apps脚本都会记录执行情况 成绩单,是每次调用Google Apps脚本的记录 脚本运行时创建的服务。这些成绩单可以提供帮助 了解脚本执行的操作。要查看 执行记录点击查看&gt;执行记录中的 脚本完成运行后的菜单栏。
当我达到某些Google Apps脚本限制(配额)时,我通常会收到这些错误(例外)。请参阅此处的配额:https://docs.google.com/macros/dashboard(切换到标签配额)。