求助:Google Sheets新增行时脚本无法给最后一行发送邮件
排查Google Sheets新增行邮件发送失败的方案
1. 确认数据读取逻辑是否正确
- 优先通过表单提交事件对象获取新增行,避免手动查找最后一行时出错(比如表格存在空白行的情况),示例代码:
function onNewRowAdded(e) { var targetRow = e.range.getRow(); var activeSheet = e.source.getActiveSheet(); // 读取第3列邮箱、第6列姓名 var recipientEmail = activeSheet.getRange(targetRow, 3).getValue().trim(); var userName = activeSheet.getRange(targetRow, 6).getValue().trim(); } - 加日志验证数据:在代码中插入
Logger.log("邮箱:%s,姓名:%s", recipientEmail, userName),执行后通过「视图>日志」确认是否读取到有效内容。
2. 检查邮件发送函数参数
- 确保
MailApp.sendEmail()参数格式合法,收件人邮箱不能为空且格式正确:MailApp.sendEmail({ to: recipientEmail, subject: "新增行通知", body: `您好${userName},您的信息已成功添加到表格中` }); - 如果邮箱是从单元格读取的带格式内容(如空格、换行),必须用
trim()清理。
3. 验证触发器配置
- 必须使用「表单提交」触发器:手动触发或时间驱动触发会导致事件对象
e为空,无法获取新增行数据。 - 重新创建触发器:删除旧触发器,进入「扩展>Apps脚本>编辑>触发器>添加触发器」,选择对应的函数,事件类型设为「表单提交」,完成授权流程。
4. 排查邮箱权限与限额
- 手动运行一次测试函数,确认脚本已获取发送邮件的权限:
function testEmailSend() { MailApp.sendEmail("你的测试邮箱地址", "测试邮件", "测试内容"); } - 检查账号发送限额:免费版Google账号每日邮件发送上限为100封,超出会被限制。
5. 排除单元格数据异常
- 确认第3列的邮箱没有隐藏字符、格式错误(比如缺少@符号),可以手动复制邮箱到邮件客户端测试是否能正常接收。
内容的提问来源于stack exchange,提问作者Kajol
相关产品推荐
相关产品推荐

