Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 序列化继续时出现意外异常_Google Apps Script - Fatal编程技术网

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

Google apps script 序列化继续时出现意外异常,google-apps-script,Google Apps Script,我写了一个谷歌应用程序电子表格脚本,该脚本应该从我的驱动器中提取一个pdf文件,并将其作为附件发送给许多人,每个人都会收到一个独特的文件。数据在电子表格中。第一列是收件人的电子邮件地址,第二列是必须附加的pdf文件名,第三列是此人的姓名 function sendPDFs() { var sheet = SpreadsheetApp.getActiveSheet(); var startRow = 2; // First row of data to process var numRows =

我写了一个谷歌应用程序电子表格脚本,该脚本应该从我的驱动器中提取一个pdf文件,并将其作为附件发送给许多人,每个人都会收到一个独特的文件。数据在电子表格中。第一列是收件人的电子邮件地址,第二列是必须附加的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.")
}
函数sendPDFs(){ var sheet=SpreadsheetApp.getActiveSheet(); var startRow=2;//要处理的第一行数据 var numRows=sheet.getDataRange().getLastRow()-1;//要处理的行数 //获取单元格A2:C3的范围 变量nummals=0 var numdrive=0 var checkCol=4 var dataRange=sheet.getRange(startRow,1,numRows,3) //获取范围中每行的值。 var data=dataRange.getValues(); 对于(数据中的i){ var行=数据[i]; var emailAddress=行[0];//第一列 var subject=“某个主体”; var body='亲爱的'+行[2]+'\n\n请找到您的'+主题+'\n\n谢谢\n\n XYZ' var attachment=行[1];//第二列。 var files=DriveApp.getFilesByName(附件);//获取名称为的所有文件。 var blobs=[];//附件的数组。 //将文件移动到blob中 while(files.hasNext()){ var file=files.next(); blobs.push(file.getAs(“application/PDF”); } //不要发送到无效的电子邮件ID或那些没有电子邮件ID的
如果(emailAddress==“”| | emailAddress.indexOf(“@”)则表明主循环没有达到预期效果:循环中的i值错误。我更改了循环定义,如下所示

  for (var i=0 ; i<data.length ; ++i) {

对于(var i=0;i首先,查看脚本编辑器菜单中的“执行记录”。您可以在那里找到错误原因

每次运行脚本时,Google Apps脚本都会记录执行情况 成绩单,是每次调用谷歌应用程序脚本的记录 脚本运行时生成的服务。这些成绩单可以提供帮助 您需要了解脚本执行的操作。要查看 执行记录单击对话框中的查看执行记录 脚本完成运行后的菜单栏


当我达到一些Google应用程序脚本限制(配额)时,我通常会遇到这些错误(例外)。请参见此处的配额:(切换到选项卡配额)。

我用上述内容替换了for循环。仍然会遇到相同的错误。嗯……我遇到另一个错误:“很抱歉,当前没有可用的服务器。请稍等,然后重试”当你试图从pdf中获取一些信息时……嘿,你使用的是新的电子表格格式吗?:如果是,至少可以解释我的问题。