异常:无法检索下一个对象:迭代器已到达末尾第 26 行错误

问题描述

function sendMail() {
  var ofo = 1;
  var restaurant = 2;
  var name = 3;
  var email = 4;
  var sent = 5;

  var emailTemp = HtmlService.createTemplateFromFile("Email");

  var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Invalid Login MM Pull Internal");

  var data = ws.getRange("A2:F" + ws.getLastRow()).getValues();

  data.forEach(function(row){

    emailTemp.ofo = row[ofo];
    var file = DriveApp.getFilesByName("Guide to Resetting Online Delivery Passwords.pdf");
    var htmlMessage = emailTemp.evaluate().getContent();
    var startRow = 2;
    for (var i = 0; i < data.length; ++i){
    if (row[sent] !== "EMAIL_SENT"){
        GmailApp.sendEmail(row[email],"otter Onboarding: Invalid " + row[ofo] + " Logins Submitted","Your email doesn't support HTML,please trying using another browser.",{name: "The otter Onboarding team",htmlBody: htmlMessage,replyTo: "onboarding@tryotter.com",attachments: [file.next().getAs(MimeType.PDF)]
        });
        ws.getRange(2 + i,6).setValue("EMAIL_SENT");
      };
    };
     });
}

我正在尝试将此 PDF 附加到我的电子邮件中,但它一直说第 26 行有一个错误:异常:无法检索下一个对象:迭代器已结束。

解决方法

只是猜测。而不是这样:

var file = DriveApp.getFilesByName("Guide to Resetting Online Delivery Passwords.pdf");

...

attachments: [file.next().getAs(MimeType.PDF)]

你可能需要这个:

var file = DriveApp.getFilesByName("Guide to Resetting Online Delivery Passwords.pdf").next();

...

attachments: [file.getAs(MimeType.PDF)]

getFiles() 给你一个迭代器(类似于数组的东西)。方法 .next() 为您提供迭代器的第一个(实际上是唯一的)元素。