Google Sheet脚本需求:新增姓名和电话时自动发送邮件
Google Sheet新增联系人时自动发邮件解决方案
1. 替换脚本代码
把你现有的代码替换成以下内容,它会自动识别新增行,提取姓名和电话并发送邮件:
function sendEmailOnNewRow(e) { // 只响应新增行的操作 if (e.changeType !== 'INSERT_ROW') return; const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); const newRowNum = targetSheet.getLastRow(); // 假设姓名在A列、电话在B列,根据你的表格结构调整列号 const userName = targetSheet.getRange(newRowNum, 1).getValue(); const userPhone = targetSheet.getRange(newRowNum, 2).getValue(); // 姓名和电话都不为空才发送邮件 if (!userName || !userPhone) return; // 替换为你要发送的目标邮箱,也可从表格指定列动态获取 const recipientEmail = "your-target-email@example.com"; const emailSubject = `新增联系人:${userName}`; const emailContent = `新联系人信息: 姓名:${userName} 电话:${userPhone}`; MailApp.sendEmail(recipientEmail, emailSubject, emailContent); }
2. 创建安装型触发器
因为自动发送邮件需要授权,不能用简单触发器,必须手动创建安装型触发器:
- 打开Google Sheet,点击顶部菜单「工具」>「脚本编辑器」
- 点击左侧栏的闹钟图标(「触发器」)
- 点击「添加触发器」,按以下配置:
- 选择函数:
sendEmailOnNewRow - 事件源:「从电子表格」
- 事件类型:「更改」
- 选择函数:
- 点击「保存」,按照提示完成权限授权即可
关键说明
- 调整代码中的列号:如果你的姓名在C列、电话在D列,就把
getRange(newRowNum, 1)改成getRange(newRowNum, 3),getRange(newRowNum, 2)改成getRange(newRowNum, 4) - 动态获取收件邮箱:如果要把邮件发送到新增行里的邮箱(比如E列),把
recipientEmail改成targetSheet.getRange(newRowNum, 5).getValue() - 避免误触发:代码里判断了
changeType为INSERT_ROW,只有新增行时才会执行,其他编辑操作不会触发邮件发送
内容的提问来源于stack exchange,提问作者Randy Junior
相关产品推荐
相关产品推荐

