如何在Google Sheets单元格变动时自动向客户发送邮件
Google Sheets 订单状态变更自动发邮件实现方案
首先确认你的表格结构每行对应一个订单,至少包含状态字段列、客户邮箱列、客户名称列、订单编号列核心字段,和参考表结构匹配:
实现步骤
第一步:打开绑定的Apps脚本编辑器
打开你的Google Sheets表格,点击顶部菜单栏「扩展程序」->「Apps 脚本」,进入脚本编辑页面,删除默认生成的myFunction空代码。第二步:粘贴自动化逻辑代码
将下方代码粘贴到编辑器中,按照注释提示修改对应配置项匹配你的表格列规则:// 配置项:请根据你的表格实际情况修改对应数值 const STATUS_COLUMN = 3; // 状态字段所在列号,从左到右从1开始计数 const EMAIL_COLUMN = 5; // 客户邮箱所在列号 const CUSTOMER_NAME_COLUMN = 2; // 客户名称所在列号 const ORDER_ID_COLUMN = 1; // 订单编号所在列号 const SHEET_NAME = "订单表"; // 存储订单的工作表名称 function sendStatusChangeEmail(e) { // 仅监听指定工作表的编辑操作 const activeSheet = e.source.getActiveSheet(); if (activeSheet.getName() !== SHEET_NAME) return; const editedRange = e.range; // 仅响应状态列的修改操作 if (editedRange.getColumn() !== STATUS_COLUMN) return; const editedRow = editedRange.getRow(); // 跳过表头行,如表头不在第1行可修改对应数值 if (editedRow === 1) return; // 提取当前行的订单关联信息 const orderId = activeSheet.getRange(editedRow, ORDER_ID_COLUMN).getValue(); const customerName = activeSheet.getRange(editedRow, CUSTOMER_NAME_COLUMN).getValue(); const customerEmail = activeSheet.getRange(editedRow, EMAIL_COLUMN).getValue(); const newStatus = editedRange.getValue(); // 跳过邮箱格式无效的行 if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(customerEmail)) return; // 邮件内容配置,可按需修改 const emailSubject = `您的订单${orderId}状态已更新`; const emailBody = `
尊敬的${customerName}:
您好!
您的订单${orderId}当前状态已更新为:${newStatus}
如有疑问可随时联系我们的客服团队。
此为系统自动通知邮件,请勿直接回复。
`;
// 执行邮件发送 MailApp.sendEmail({ to: customerEmail, subject: emailSubject, body: emailBody });
}
- ### 第三步:配置可安装编辑触发器 简单触发器没有发送邮件的权限,需要手动配置可安装触发器完成权限授权: 1. 在脚本编辑页面,点击左侧菜单栏的「触发器」(闹钟形状图标) 2. 点击右下角「添加触发器」按钮 3. 按以下参数配置触发器: - 选择要运行的功能:`sendStatusChangeEmail` - 选择活动来源:`电子表格` - 选择事件类型:`编辑时` - 失败通知设置:可选择「立即通知我」方便后续排查运行问题 4. 点击保存,按照页面提示登录Google账号完成权限授权即可。 ## 注意事项 - 如果需要自定义邮件样式,可以用`htmlBody`参数替换代码中的`body`参数,支持HTML格式内容 - 测试功能时直接修改任意行的状态列,系统会自动触发邮件发送 - Google账号对单日邮件发送量有限额,普通个人账户单日限额为100封,Workspace账号限额更高,订单量较大时需要注意额度限制 内容的提问来源于stack exchange,提问作者ImAlex2000
相关产品推荐
相关产品推荐

