如何通过Google Script指定Contacts工作表实现Google表格自动邮件发送?
搞定Google Sheets自动邮件通知:指定"contacts"工作表的脚本写法
嘿,这事儿其实很简单,核心就是不要用默认的getActiveSheet()或者getSheets()[0],而是直接通过工作表名称精准定位。我给你一步步拆解,再附上完整的脚本示例:
1. 核心:获取"contacts"工作表
在Google Apps Script里,你可以用getSheetByName()方法直接锁定目标工作表,代码如下:
// 获取当前打开的表格文件 const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // 精准获取名为"contacts"的工作表 const contactsSheet = spreadsheet.getSheetByName("contacts");
这一步就跳过了默认的第一个工作表,直接拿到你需要的数据源。
2. 完整的自动邮件通知脚本示例
假设你的"contacts"工作表是这样的结构(第一行是表头):
| 姓名 | 邮箱地址 | 邮件主题 | 邮件内容 |
|---|---|---|---|
| 张三 | zhang@xxx.com | 任务提醒 | 你的待办任务即将到期 |
那完整的脚本可以这么写:
function sendEmailsFromContactsSheet() { // 1. 获取目标工作表 const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); const contactsSheet = spreadsheet.getSheetByName("contacts"); // 2. 获取工作表里的有效数据(跳过表头) // 从第二行开始,取到最后一行有内容的单元格 const dataRange = contactsSheet.getDataRange().offset(1, 0); const data = dataRange.getValues(); // 3. 循环遍历每一行数据,发送邮件 data.forEach(row => { const recipientName = row[0]; // 第一列是姓名 const recipientEmail = row[1]; // 第二列是邮箱 const emailSubject = row[2]; // 第三列是主题 let emailBody = row[3]; // 第四列是内容 // 给邮件内容加个性化前缀,提升友好度 emailBody = `亲爱的${recipientName}:\n\n${emailBody}`; // 发送邮件 MailApp.sendEmail({ to: recipientEmail, subject: emailSubject, body: emailBody }); // 可选:打印日志,方便调试查看发送情况 console.log(`已发送邮件给 ${recipientName} (${recipientEmail})`); }); }
3. 关键细节提醒
- 跳过表头:用
offset(1, 0)把数据范围往下偏移1行,避免把表头当成收件人信息处理。 - 权限授权:第一次运行脚本时,Google会要求你授权访问邮箱和表格数据,按照提示完成授权即可。
- 数据校验:如果表格里有空行或无效邮箱,可以加个判断,比如
if (recipientEmail && recipientEmail.includes("@")),避免发送失败。
4. 运行脚本的步骤
- 打开你的Google表格,点击顶部菜单的「扩展程序」→「Apps脚本」
- 把上面的代码粘贴进去,保存项目(随便起个名字,比如"ContactEmailSender")
- 点击编辑器顶部的运行按钮,选择
sendEmailsFromContactsSheet函数,完成授权后就能执行了。
内容的提问来源于stack exchange,提问作者Adrienn Tóth
相关产品推荐
相关产品推荐

