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

Google表单提交后自动发送指定文件夹附件至邮箱的脚本问题

解决方案:Google表单提交时自动发送指定文件夹内的所有PDF附件

嘿,这个需求完全可以实现!咱们先拆解你现有代码里的几个关键问题,再给你调整后的完整脚本:

现有代码的核心问题

  • 变量作用域错误:你在for循环里给intakenumber和emailaddress赋值,但循环结束后这两个变量只会保留最后一行的数据,而且邮件发送逻辑放在while循环里,会导致每个文件单独发一封邮件,不是把所有附件合并发送
  • 文件夹查找局限:getFolderByName()只会在脚本有权限访问的根目录里查找,如果你的目标文件夹在子目录中,就会找不到;而且如果有重名文件夹,它只会返回第一个匹配的,容易出错
  • 冗余代码:var attachment = (attachments)这一行完全没有作用,属于无效代码

修正后的完整脚本

function onFormSubmit(e) {
  // 从表单提交事件中获取输入值
  var emailAddress = e.namedValues["email"][0];
  var intakeNumber = e.namedValues["intake number"][0];

  // 搜索整个Drive中名称匹配intake number的文件夹(支持子目录)
  var folders = DriveApp.searchFolders("title='" + intakeNumber + "'");
  
  if (!folders.hasNext()) {
    Logger.log("未找到名称为" + intakeNumber + "的文件夹");
    return;
  }

  var targetFolder = folders.next();
  var pdfFiles = targetFolder.getFilesByType(MimeType.PDF);
  var attachments = [];

  // 收集文件夹内所有PDF文件作为附件
  while (pdfFiles.hasNext()) {
    var file = pdfFiles.next();
    attachments.push(file); // 直接推文件对象,无需转格式
    Logger.log("已添加附件:" + file.getName());
  }

  if (attachments.length === 0) {
    Logger.log("文件夹" + intakeNumber + "中没有PDF文件");
    return;
  }

  // 发送邮件
  var subject = "你的文档已送达";
  var message = "您好,以下是对应intake number的所有文档附件,请查收。";

  MailApp.sendEmail({
    to: emailAddress,
    subject: subject,
    body: message,
    attachments: attachments
  });

  Logger.log("邮件已成功发送至:" + emailAddress);
}

关键改进说明

  1. 使用表单提交触发事件:改用onFormSubmit(e)作为函数名,直接绑定Google表单的「提交时」触发器,不需要手动读取表格数据(避免表格行数错误的问题)
  2. 更可靠的文件夹搜索:用DriveApp.searchFolders()替代getFolderByName(),可以搜索整个Drive的所有文件夹(包括子目录),而且通过精确匹配标题避免重名问题
  3. 正确的附件收集逻辑:把邮件发送放在while循环之外,确保每个收件人只收到一封包含所有PDF附件的邮件
  4. 错误处理:增加了文件夹不存在、文件夹内无PDF文件的判断,避免脚本崩溃,同时通过日志记录关键状态

配置步骤

  • 打开你的Google表单对应的响应表格
  • 点击顶部菜单「扩展程序」→「Apps脚本」
  • 替换原有代码为上面的脚本
  • 点击左侧「触发器」图标,添加一个新触发器:
    • 选择函数:onFormSubmit
    • 选择事件源:「表单提交」
    • 选择事件类型:「来自表单的提交」
  • 保存并授权脚本权限(首次运行需要授权)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:15:30