这可以从同一个 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,但得到了相同的结果。
由于您尚未共享工作表和文件夹内容,我们无法告诉您到底发生了什么。
我建议您在第 17 行后添加
Logger.log(filename);
。下次运行脚本时,这将记录 filename
值,这将帮助您了解发生了什么并验证读取的值是否与包含的文件名匹配文件夹。