【问题标题】:Sending multiple attachments using Google Spreadsheet and Google Script使用 Google 电子表格和 Google 脚本发送多个附件
【发布时间】:2019-05-06 04:46:07
【问题描述】:

我尝试使用 Google 电子表格发送多个附件,但出现以下错误“无法检索下一个对象:迭代器已到达末尾。”

它确实有效,因为它将电子邮件发送到列表中的第一个电子邮件地址,但第二个电子邮件地址却失败了。

我在这里看到过类似的问题,但没有解决方案可以解决我的问题。

这是脚本:

function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 1;
var numRows = 2; 
var dataRange = sheet.getRange(startRow, 1, numRows, 2);
var file1 = DriveApp.getFilesByName('Maandbrief December.pdf');
var file2 = DriveApp.getFilesByName('Weekendbrief 7-9 december.pdf');
var data = dataRange.getValues();
for (i in data) {
    var row = data[i];
    var emailAddress = row[0];
    var message = row[1];
    var subject = "Maandbrief December en weekendbrief 7-9 december"; 
    MailApp.sendEmail({to:emailAddress, subject:subject, body:message, attachments: [file1.next(), file2.next()]})
}}

感谢您的帮助。

【问题讨论】:

  • 我不太了解这个 Google 脚本,无法判断它是否重复。也许不同之处在于我不在一个特定的文件夹中工作,而我的 file1 和 file2 已经真正分配了。
  • 实际上发生错误是因为分配了file1和file2,但不是您想象的那样。 getFilesByName 以及像 getFiles 这样的其他方法,返回一个迭代器对象,它不能有一个“下一个”文件。在使用next()之前,我们应该使用hasNext()来避免问题中引用的错误。

标签: email google-apps-script google-sheets google-drive-api gmail


【解决方案1】:

试试这个:

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 1;
  var numRows = 2; 
  var dataRange = sheet.getRange(startRow, 1, numRows, 2);
  var files1 = DriveApp.getFilesByName('Maandbrief December.pdf');
  while(files1.hasNext()){var file1=files1.next();}
  var files2 = DriveApp.getFilesByName('Weekendbrief 7-9 december.pdf');
  while(files2.hasNext()){var file2=files2.next();}
  var data = dataRange.getValues();
  for (var i=0;i<data.length;i++) {
    var row = data[i];
    var emailAddress = row[0];
    var message = row[1];
    var subject = "Maandbrief December en weekendbrief 7-9 december"; 
    MailApp.sendEmail({to:emailAddress, subject:subject, body:message, attachments: [file1, file2]})
  }
}

或者这个:

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 1;
  var numRows = 2; 
  var dataRange = sheet.getRange(startRow, 1, numRows, 2);
  var n1=0;
  var n2=0;
  var files1 = DriveApp.getFilesByName('Maandbrief December.pdf');
  while(files1.hasNext()){var file1=files1.next();n1++;}
  var files2 = DriveApp.getFilesByName('Weekendbrief 7-9 december.pdf');
  while(files2.hasNext()){var file2=files2.next();n2++}
  var data = dataRange.getValues();
  if(n1==1 && n2==1){
    for (var i=0;i<data.length;i++) {
      var row = data[i];
      var emailAddress = row[0];
      var message = row[1];
      var subject = "Maandbrief December en weekendbrief 7-9 december"; 
      MailApp.sendEmail({to:emailAddress, subject:subject, body:message, attachments: [file1, file2]});
    }
  }else{
    throw('More than one file with given name.');
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 2021-11-21
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多