在线表单更新Google Sheet后触发邮件发送失败的排查求助
问题排查与修复方案
从你提供的代码来看,邮件未发送大概率是以下几个原因导致的,逐一排查修复:
1. 触发条件错误
你设置的触发条件是if (e.range.columnStart == 3),但Tally提交表单时会新增一整行数据,触发的单元格范围起始列应为1而非3。这个错误条件会直接跳过邮件发送逻辑。
修复:移除列判断,或改为校验目标工作表(确保仅在指定工作表有提交时触发):
if (e.source.getActiveSheet().getName() === "FormSubmission") { MailApp.sendEmail({ to: "abc@gmail.com", subject: "New Request", htmlBody: msg, noReply: true }); }
2. msg变量未定义
代码中htmlBody: msg引用了msg变量,但你提供的片段里没有对msg赋值。变量未定义会导致脚本报错终止,邮件无法发送。
修复:提前用表单数据拼接邮件内容,示例如下:
// rData是当前提交行的二维数组,rData[0][0]对应第一列数据,按需调整 const msg = `<p>新请求提交:</p> <p>提交人:${rData[0][0]}</p> <p>提交内容:${rData[0][2]}</p>`;
3. 触发器类型错误
若你使用的是onEdit简单触发器,Tally的外部表单提交可能无法触发脚本(简单触发器有权限限制,仅支持手动编辑触发)。正确做法是设置安装型触发器:
- 打开脚本编辑器,点击左侧「触发器」图标
- 添加触发器,选择你的函数,触发事件选「从电子表格」→「表单提交」
4. 权限未授权
第一次运行脚本时,需手动授权MailApp发送邮件的权限。未完成授权会导致脚本因权限不足无法发送邮件。
修复:在脚本编辑器中手动运行一次函数,按提示完成授权流程。
内容的提问来源于stack exchange,提问作者kevin20996
相关产品推荐
相关产品推荐

