使用 Apps 脚本自动从 Google 表格发送多封电子邮件,每封电子邮件都存储在 Google 云端硬盘中不同的特定 pdf 附件

问题描述 投票:0回答:1

这可以从同一个 Google 工作表发送自动电子邮件,但是当我添加第 9、18 和 21 行(附件部分)时,它不断返回

异常:无法检索下一个对象:迭代器已到达末尾。 SendMails @ Code.gs:21

Google Drive API 已添加

 1  function SendMails() {

 3  var wrkBk = SpreadsheetApp.getActiveSpreadsheet();
 4  var wrkShtEmailIDs= wrkBk.getSheetByName("Email_ID");
 5  var wrkShtMessage= wrkBk.getSheetByName("Mail_Details");
 6  var subject = wrkShtMessage.getRange('A2').getValue();
 7  var message = wrkShtMessage.getRange('B2').getValue();
 8
 9  var folder = DriveApp.getFolderById('xxxxxxxxxxxxxxxxxxxxxx');
10
11
12  for (var i=41;i<43;i++){
13
14  var fname = wrkShtEmailIDs.getRange('A' + i).getValue();
15  var lname = wrkShtEmailIDs.getRange('B' + i).getValue();
16  var emailAddress = wrkShtEmailIDs.getRange('C' + i).getValue();
17  var fileName = wrkShtEmailIDs.getRange('D' + i).getDisplayValue();
18  var file = folder.getFilesByName(fileName);
19  var finalmsg = "";
20  finalmsg = fname + "\n" + message;
21 MailApp.sendEmail(emailAddress, subject, finalmsg, {attachments:[file.next().getAs(MimeType.PDF)]})
22  }
23  }

我真的不知道还能尝试什么,我最初在第 9 行使用 .getFolderByName 代替 getFolderById,但得到了相同的结果。

email google-sheets google-apps-script google-drive-api
1个回答
0
投票

由于您尚未共享工作表和文件夹内容,我们无法告诉您到底发生了什么。

我建议您在第 17 行后添加

Logger.log(filename);
。下次运行脚本时,这将记录
filename
值,这将帮助您了解发生了什么并验证读取的值是否与包含的文件名匹配文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.