Google Sheets批量发邮件脚本问题:无法访问getDataRange二维数组
解决Google Sheets批量发送对应邮件的问题
你的代码核心问题有两个:
getDataRange()返回的是Range对象,不是直接可访问的二维数组,必须调用getValues()方法才能提取出单元格数据的二维数组- 数组索引从0开始,你之前的列索引对应逻辑错误,第一列邮箱应该对应索引0
下面是修正后的代码:
function sendEmail() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getSheetByName("Email"); // 关键:调用getValues()把Range对象转成可直接访问的二维数组 var data = sh.getDataRange().getValues(); // 从i=1开始循环(跳过第一行表头),如果你的表格没有表头,就改成i=0 for(var i = 1; i < data.length; i++){ var emailAddress = data[i][0]; // 第一列(收件邮箱)对应数组索引0 var subject = data[i][1]; // 第二列(邮件主题)对应数组索引1 var body = data[i][2]; // 第三列(邮件正文)对应数组索引2 // 可选:增加空邮箱判断,避免发送出错 if(emailAddress){ MailApp.sendEmail(emailAddress, subject, body); } } }
额外提示
- 首次运行会触发权限申请,按照页面提示完成授权即可
- Google普通账号每日邮件发送上限为100封,G Suite/Workspace账号上限更高
- 测试阶段建议只用1-2个测试邮箱,避免误发大量邮件
内容的提问来源于stack exchange,提问作者Lofton Gentry
相关产品推荐
相关产品推荐

