基于Google Sheets表单提交单元格总和自动发送对应邮件的技术问询
当然能搞定!我之前帮同事做过几乎一模一样的需求,其实就是靠Google Apps Script的表单提交触发器来实现自动计算+邮件推送,一步步来很简单:
实现步骤
1. 打开Google Sheets的脚本编辑器
- 打开你的表单对应的Google Sheets表格
- 点击顶部菜单栏的「扩展程序」→「Apps Script」,进入脚本编辑器(第一次打开可能需要加载一会儿)
2. 编写核心代码
把下面的代码粘贴到脚本编辑器的代码框里,替换默认的myFunction:
function onFormSubmit(e) { // 获取新提交的那一行数据范围 const range = e.range; const sheet = range.getSheet(); const rowNum = range.getRow(); // 计算当前行B到G列的总和(列索引从1开始,B是2,G是7,共6列) const scoreRange = sheet.getRange(rowNum, 2, 1, 6); const scores = scoreRange.getValues()[0]; const totalScore = scores.reduce((total, num) => total + num, 0); // 获取H列的用户邮箱(H是第8列) const userEmail = sheet.getRange(rowNum, 8).getValue(); // 根据总分判断邮件内容 let emailSubject, emailBody; if (totalScore >= 40) { emailSubject = "你的问卷反馈结果:A类"; emailBody = `您好!你的问卷得分总和为${totalScore},属于A类反馈。感谢你的参与!`; } else { emailSubject = "你的问卷反馈结果:B类"; emailBody = `您好!你的问卷得分总和为${totalScore},属于B类反馈。感谢你的参与!`; } // 确保邮箱不为空时发送邮件 if (userEmail) { GmailApp.sendEmail(userEmail, emailSubject, emailBody); } }
代码关键点说明
onFormSubmit是Google Apps Script的内置触发函数名,只要配置了表单提交触发器,新表单提交时就会自动运行这个函数e.range是触发事件自带的参数,直接定位到新提交的那一行,不用自己找最新行,避免多用户提交时出错- 用
reduce方法计算得分总和,比在Sheets里写公式更灵活,而且是实时计算新增行的数据 GmailApp.sendEmail是官方提供的邮件服务,只要你的Google账号有发送权限就能用,不用额外配置邮箱
3. 配置表单提交触发器
光有代码还不够,得告诉脚本什么时候运行:
- 在脚本编辑器左侧,点击那个时钟形状的「触发器」图标
- 点击「添加触发器」按钮
- 按下面的选项配置:
- 选择要运行的函数:
onFormSubmit - 选择部署类型:
Head - 选择事件源:
从电子表格 - 选择事件类型:
表单提交
- 选择要运行的函数:
- 点击「保存」,这时会弹出授权窗口,跟着步骤授权就行(如果提示“不安全”,点击「高级」→「转到XX脚本」,因为这是你自己写的脚本,完全安全)
4. 测试验证
- 打开你的Google表单,提交一次测试数据,确保B:G列填的是数字,H列有正确的邮箱
- 回到Sheets,看看新增的行有没有正常计算(如果需要把总和写入某一列,比如I列,可以加一行
sheet.getRange(rowNum, 9).setValue(totalScore);) - 检查测试邮箱有没有收到对应类型的邮件
注意事项
- 确保B:G列都是数字格式,如果是文本类型,求和会出错,提前在Sheets里设置好列格式
- 如果H列的邮箱是表单收集的,建议在Google表单里开启「收集电子邮件地址」选项,这样会自动同步到Sheets,避免用户手动输入错误
- Google普通账号的邮件发送限额是每天100封,足够大部分小型问卷使用,如果是企业账号限额更高
内容的提问来源于stack exchange,提问作者pwq
相关产品推荐
相关产品推荐

