Google Script 表格触发发送邮件函数无法正常工作问题求助
代码无法触发邮件的3个核心问题
- 取值逻辑错误:你先获取了整列D的范围,直接调用
getValue()只会返回该范围左上角单元格(即D1)的值,完全读不到你新增的最后一行数据,判断条件从一开始就不生效。 - 语法错误:
MailApp.sendEmail的参数对象里,body属性行末尾缺少逗号分隔,脚本运行时会直接抛出语法异常,根本执行不到发邮件的逻辑。 - 缺少触发配置:你写的是普通自定义函数,没有绑定表格编辑事件,就算代码逻辑正确,修改单元格时也不会自动执行函数,自然不会发邮件。
修复后可直接使用的代码
function sendEmailReport(e) { // 替换成你自己的表格链接、工作表名、收件邮箱 const SS_LINK = '你的Google电子表格实际链接'; const SHEET_NAME = 'Sheet Name'; const RECEIVER_EMAIL = '你的实际收件邮箱'; // 优先从事件对象取编辑的单元格信息,减少不必要的接口调用 const sheet = e ? e.range.getSheet() : SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME); // 非目标工作表的编辑直接跳过 if (sheet.getName() !== SHEET_NAME) return; let targetValue, targetRow; if (e) { // 编辑位置不在D列直接跳过 if (e.range.getColumn() !== 4) return; targetValue = Number(e.value); targetRow = e.range.getRow(); } else { // 手动运行脚本时默认取D列最后一行的值做判断 targetRow = sheet.getLastRow(); targetValue = Number(sheet.getRange(targetRow, 4).getValue()); } // 数值小于8时触发邮件 if (!isNaN(targetValue) && targetValue < 8) { MailApp.sendEmail({ to: RECEIVER_EMAIL, subject: "数值异常提醒", body: `表格D列第${targetRow}行新增数值为${targetValue},小于阈值8,表格链接:${SS_LINK}`, name: 'Department ABC' }); } }
配置步骤
- 把代码里的占位符(表格链接、工作表名、收件邮箱)替换成实际信息,保存脚本。
- 在Google Apps Script编辑器左侧菜单找到「触发器」选项,点击「添加触发器」。
- 触发规则按以下选择:执行函数选
sendEmailReport,事件来源选「来自电子表格」,事件类型选「编辑时」,保存后完成账号授权即可。 - 测试时直接在目标工作表D列输入数值,小于8时会自动发送通知邮件。
内容的提问来源于stack exchange,提问作者Airotest
相关产品推荐
相关产品推荐

