如何在AppScript动态邮件中引用单元格数据作为收件人?
在Google Apps Script邮件脚本中动态引用单元格作为收件人
你当前代码里的to: 'b9'只是将字符串'b9'作为收件人,无法实现动态获取单元格数据的需求。以下是具体的修改方案:
关键修改说明
- 复用已定义的
ss变量,避免重复调用SpreadsheetApp.getActiveSpreadsheet(),提升脚本执行效率 - 通过
getRange("B9").getValue()读取指定单元格的邮箱地址(注意单元格列标识为大写B,与表格列对应) - 补充原脚本缺失的邮件发送代码
MailApp.sendEmail(message),否则脚本只会构建邮件对象,不会实际发送
修改后的完整代码
function Email() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const emailSheet = ss.getSheetByName("Email"); // 读取Email工作表中B9单元格的收件人邮箱 const recipientEmail = emailSheet.getRange("B9").getValue(); const message = { to: recipientEmail, // 动态引用单元格数据 cc: "email@sampleemail.com", subject: "Test Email", body: "Hi,\n\nPls review this email.\n\nThank you,\nKate", name: "Kate", attachments: [ss.getAs(MimeType.PDF).setName("Email Subject")] }; // 执行邮件发送 MailApp.sendEmail(message); }
拓展提示
- 若单元格包含多个收件人,用英文逗号分隔邮箱地址即可,
MailApp.sendEmail()会自动识别并发送给所有收件人 - 如需批量读取多行收件人,可使用
getRange(2, 2, 10, 1).getValues()(示例:读取第2行到第11行的B列数据),再将二维数组转换为逗号分隔的字符串:recipientList.flat().join(", ") - 确保单元格内的邮箱格式正确,否则会导致邮件发送失败
内容的提问来源于stack exchange,提问作者Kate
相关产品推荐
相关产品推荐

