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

如何基于Google表单提交自动更新表格并发送PDF邮件?

解决方案:利用onFormSubmit触发器实现成本计算器自动化流程

一、绑定onFormSubmit触发器

要实现表单提交后的自动流程,首先给脚本绑定表单提交触发事件:

  1. 打开你的Google Sheet,点击顶部「扩展程序」>「Apps脚本」进入脚本编辑器
  2. 点击左侧「触发器」图标(闹钟样式)
  3. 点击「添加触发器」,按以下配置设置:
    • 要运行的函数:onFormSubmit
    • 部署类型:Head
    • 事件源:电子表格
    • 事件类型:表单提交
  4. 保存并完成授权(首次授权需按提示允许脚本访问表格和邮箱)

二、编写核心自动化脚本

将以下代码粘贴到脚本编辑器中,根据你的实际表格结构调整参数:

function onFormSubmit(e) {
  // 1. 提取表单提交的关键数据
  const submitData = e.namedValues;
  // 替换为你表单中「提交人/乐队名称」的字段名(需与表单问题标题完全一致)
  const targetBandName = submitData['乐队名称'][0];
  // 替换为你表单中「联系邮箱」的字段名
  const submitterEmail = submitData['联系邮箱'][0];

  // 2. 更新「Tour Calculator」标签的乐队名称
  const tourCalcSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Tour Calculator');
  // 替换为你实际的下拉框单元格位置(比如A1、B2等)
  tourCalcSheet.getRange('A1').setValue(targetBandName);
  // 强制刷新表格公式,确保VLOOKUP数据同步更新
  SpreadsheetApp.flush();

  // 3. 生成「PDF」标签的PDF文件
  const pdfSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('PDF');
  const pdfBlob = pdfSheet.getAs('application/pdf');
  pdfBlob.setName(`${targetBandName}成本计算表.pdf`);

  // 4. 调用邮件发送逻辑(替换为你已有的邮件函数,或使用下方示例)
  sendCalculationEmail(submitterEmail, targetBandName, pdfBlob);
}

// 示例邮件发送函数(如果你的现有代码不支持附件,可替换为这个)
function sendCalculationEmail(to, bandName, pdfAttachment) {
  const subject = `${bandName}成本计算表已生成`;
  const body = `您好,附件是您提交的${bandName}成本计算表PDF文件,请查收。`;
  
  GmailApp.sendEmail(to, subject, body, {
    attachments: [pdfAttachment]
  });
}

三、关键配置说明

  • 表单字段匹配:确保submitData['乐队名称']和submitData['联系邮箱']中的字段名与你Google表单里的问题标题完全一致(包括空格和标点)
  • 单元格位置调整:tourCalcSheet.getRange('A1')需替换为「Tour Calculator」标签中下拉框实际所在的单元格坐标
  • 公式刷新:SpreadsheetApp.flush()用于强制表格计算VLOOKUP公式,避免生成PDF时数据未更新
  • 邮件函数兼容:如果你的现有邮件发送代码已有逻辑,只需将生成的pdfBlob作为附件传入即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:18:14