You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

发送带附件邮件时报file.next is not a function错误如何解决

报错修复方案

错误根因

file.next is not a function 的触发原因是你代码中的file变量是通过字符串切片得到的Google Drive文件ID字符串,只有DriveApp.getFiles()返回的文件迭代器对象才具备next()方法,字符串类型不支持调用该方法。

修复步骤

  • 先通过切片得到的文件ID调用DriveApp.getFileById(),获取到对应的Drive文件对象
  • 直接使用该文件对象调用getAs方法生成附件,不需要额外调用next()

修正后完整代码

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet_bd = ss.getSheetByName('BD');
  var numRows = sheet_bd.getLastRow();
  var pdf = sheet_bd.getRange(numRows, 3).getValue();
  // 提取文件ID
  var fileId = pdf.slice(33, 66);
  // 根据ID获取Drive文件对象
  var file = DriveApp.getFileById(fileId);

  MailApp.sendEmail({
    to: 'email@email.com',   
    subject: "test", 
    body:"Test message",
    attachments: [file.getAs(MimeType.PDF)],
  });
}

注意事项

首次运行修正后的代码时,如果出现权限提示,按照指引授予脚本Google Drive的读取权限即可正常执行。

内容的提问来源于stack exchange,提问作者Alvim Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 01:06:01