Google App Script:实现弹窗提示与邮件触发联动求助
解决方案
先修正你现有脚本里的语法错误(edited row应为edited_row),再添加邮件发送逻辑,完整代码如下:
function triggerOnEdit(e) { showMessageAndSendEmail(e); } function showMessageAndSendEmail(e) { var editedRow = checkStatusIsRequest(e); if (editedRow > 0) { // 触发弹窗提示 SpreadsheetApp.getUi().alert("Row # " + editedRow + " Request received!"); // 触发邮件通知 sendRequestNotification(editedRow); } } function checkStatusIsRequest(e) { var range = e.range; // 确认编辑的是第7列(Status列) if (range.getColumn() === 7) { var editedRow = range.getRow(); var status = SpreadsheetApp.getActiveSheet().getRange(editedRow, 7).getValue(); if (status === 'Request') { return editedRow; } } return 0; } function sendRequestNotification(row) { var sheet = SpreadsheetApp.getActiveSheet(); // 获取对应行的A、E、F列数据 var brand = sheet.getRange(row, 1).getValue(); var priority = sheet.getRange(row, 5).getValue(); var wc = sheet.getRange(row, 6).getValue(); // 配置邮件参数 var recipient = "your-email@example.com"; // 替换成接收通知的邮箱 var subject = "New Request Received - Row #" + row; var body = ` 新请求已提交: - 品牌(Brand):${brand} - 优先级(Priority):${priority} - 周次(W/C):${wc} 行号:${row} `; // 发送邮件 MailApp.sendEmail(recipient, subject, body); }
关键修改说明
- 修复了原脚本中变量名的语法错误,将判断函数更名为
checkStatusIsRequest,更贴合需求 - 新增
sendRequestNotification函数专门处理邮件发送,通过行号精准获取对应列的内容 - 在主函数中同时调用弹窗和邮件发送逻辑,实现两个功能同步触发
操作步骤
- 打开你的Google表格,点击顶部菜单栏「扩展程序」→「Apps脚本」
- 删除原有代码,粘贴上面的完整代码
- 将
sendRequestNotification函数里的your-email@example.com替换成实际接收通知的邮箱地址 - 点击保存按钮,给脚本命名(比如
RequestNotification) - 测试:手动将某行的Status列改为「Request」,会弹出提示框,同时指定邮箱会收到通知邮件
注意事项
- 第一次运行脚本时会要求授权,按照提示完成Google账号的权限授权即可(需允许脚本访问表格和邮件功能)
- 普通免费Google账号支持每日发送有限数量的邮件,足够团队日常使用
- 脚本依赖Google表格的
onEdit简单触发器,无需额外配置,编辑表格时自动触发
内容的提问来源于stack exchange,提问作者Mathew Garrett
相关产品推荐
相关产品推荐

