Google Apps Script 修改需求:任务完成后自动发邮件至B列指定邮箱
解决Google Apps Script自动发送任务通知邮件的问题
原代码的核心问题
- 未使用
onEdit事件触发逻辑,无法自动响应单元格编辑操作 getRange("J:J").getValue()仅读取J列第一行的值,无法检测整列的编辑变化- 条件判断误用赋值运算符
=,而非比较运算符==,导致逻辑错误 - 固定收件人邮箱,未读取对应行B列的目标邮箱地址
修正后的脚本
function onEdit(e) { // 获取编辑事件的相关信息 const editedCell = e.range; const activeSheet = editedCell.getSheet(); // 仅处理Sheet1中J列(第10列)且值为"Approved"的编辑操作 if (activeSheet.getName() !== "Sheet1" || editedCell.getColumn() !== 10 || e.value !== "Approved") { return; } // 获取当前编辑行的B列(第2列)邮箱地址 const targetEmail = activeSheet.getRange(editedCell.getRow(), 2).getValue(); // 简单验证邮箱格式,避免无效地址 if (/^\S+@\S+\.\S+$/.test(targetEmail)) { // 发送任务完成通知邮件 MailApp.sendEmail( targetEmail, "任务已完成", `您的任务已被标记为【Approved】,请知悉。` ); } }
关键说明
- 用
onEdit(e)事件函数自动响应单元格编辑,e对象包含编辑的单元格位置、新值等关键信息 - 增加范围判断,仅在指定工作表、指定列的内容符合要求时执行邮件发送逻辑,避免无效触发
- 通过编辑行号匹配对应B列的邮箱,实现动态收件人
- 首次运行脚本需要完成授权;若需支持离线编辑、批量修改等场景,需在脚本编辑器的「编辑」→「当前项目的触发器」中创建可安装的 onChange 触发器
内容的提问来源于stack exchange,提问作者Joe S
相关产品推荐
相关产品推荐

