序列化继续时出现意外异常

时间:2014-02-07 06:07:06

标签: google-apps-script

我写了一个谷歌应用程序电子表格脚本,该脚本应该从我的驱动器中获取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.")
}

我在序列化继续时得到错误意外异常。但是,会发送电子邮件。看起来代码有效,但我不知道为什么错误。我已经看到现有的线程具有相同的错误,但他们提供了帮助。

如何解决此问题,请提供任何帮助。

2 个答案:

答案 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(切换到标签配额)。