Google Form提交后触发自定义邮件发送的脚本开发咨询
Google Form提交自动发送自定义通知邮件实现方案
你的需求完全可以实现,以下是可直接使用的脚本及配置方法,同时解决你提到的两个问题:
完整可运行脚本
function sendNotificationOnFormSubmit(e) { // 配置区:根据你的表格实际列索引调整,列索引从0开始计数(A列=0,B列=1,C列=2以此类推) const CONFIG = { recipientColumnIndex: 2, // 目标邮箱所在列,这里设为第3列(C列),如果要读第2列就改成1 // 如果需要读取表单收集的提交者邮箱,找到对应列的索引替换上面的数值即可 ccColumnIndex: 3, // 上级邮箱所在列,不需要抄送就删掉这行,后面sendEmail里也删掉cc参数 dateColumnIndex: 5, idColumnIndex: 6, codeColumnIndex: 8, actionColumnIndex: 9, locationColumnIndex: 10, errorTypeColumnIndex: 11, emailSubject: "巡检问题通知" // 自定义邮件标题 } // 直接获取本次提交的行数据,不需要遍历全表,大表也不会有性能问题 const submittedRow = e.values; // 动态获取收件人,不需要配置dummy邮箱 const recipient = submittedRow[CONFIG.recipientColumnIndex]; // 不需要抄送就删掉下面这行 const ccRecipient = submittedRow[CONFIG.ccColumnIndex]; // 拼接自定义邮件内容 const message = `你好,你有一项巡检问题待确认,详情如下: Date of Action: ${submittedRow[CONFIG.dateColumnIndex]} ID: ${submittedRow[CONFIG.idColumnIndex]} Action Code: ${submittedRow[CONFIG.codeColumnIndex]} Type of Action: ${submittedRow[CONFIG.actionColumnIndex]} Location: ${submittedRow[CONFIG.locationColumnIndex]} Error Type: ${submittedRow[CONFIG.errorTypeColumnIndex]} `; // 发送邮件,不需要抄送就删掉cc参数那行 MailApp.sendEmail({ to: recipient, cc: ccRecipient, subject: CONFIG.emailSubject, body: message }); }
配置步骤
- 打开和表单绑定的Google Sheet,点击顶部菜单栏「扩展程序」->「Apps脚本」进入脚本编辑页
- 删掉编辑页默认的所有代码,把上面的脚本粘贴进去,根据你表格的实际列位置修改CONFIG里的索引值
- 点击脚本编辑页左侧菜单「触发器」->点击右下角「添加触发器」
- 触发器配置:选择要运行的函数为
sendNotificationOnFormSubmit,事件来源选择「电子表格」,事件类型选择「表单提交时」,点击保存 - 按提示完成Google账号授权,出现安全提示时点击「高级」->「继续访问(你的脚本名称)」即可完成授权
其他说明
- 该脚本每次触发仅读取最新提交的一行数据,不会遍历全表,即使表格行数很大也不会出现运行性能问题
- 如果需要调整邮件内容,直接修改
message变量里的文本即可,支持添加更多字段或调整格式 - 如果你需要直接绑定Google Form触发,只需要修改数据获取逻辑为读取表单提交的响应内容,整体逻辑和上述脚本一致
内容的提问来源于stack exchange,提问作者Ashan11
相关产品推荐
相关产品推荐

