Google Sheets转Excel并发多收件人邮件代码出现语法错误
问题定位
你的代码存在3处可直接定位的语法/逻辑错误,是运行报错的直接原因:
- 导出接口URL拼接逻辑错误:硬编码写入了带
/edit#gid=0的完整表格编辑页路径,又重复拼接当前表格ID,最终生成的请求URL格式完全不符合Google导出接口要求,即使语法不报错也无法正常导出文件 MailApp.sendEmail参数语法断裂:在htmlBody字段后错误添加分号,将本应属于同一个配置对象的attachments参数拆成了独立的代码块,对象括号、语句分号位置完全错误,直接触发语法报错- 授权头拼接存在多余换行:
Bearer前缀和OAuth token之间存在无意义的换行缩进,可能导致授权头格式失效,触发权限报错
修复后完整代码
function myFunction() { var message = "This is a test of HTML <br><br> Line two"; var recipientsTO = "shrikant.ravi@droom.in,Bhavishya.saini@droom.in"; var recipientsCC = "Lipika.uniyal@droom.in"; var Subject = "Vacation Approval Request"; var html = message; const ss = SpreadsheetApp.getActive(); const nameFile = ss.getName() + ".xlsx"; const requestData = { "method": "GET", "headers": { "Authorization": "Bearer " + ScriptApp.getOAuthToken() } }; // 修正导出URL格式,移除错误的硬编码路径,使用标准导出接口规则 const url = "https://docs.google.com/spreadsheets/d/" + ss.getId() + "/export?format=xlsx"; const result = UrlFetchApp.fetch(url, requestData); const contents = result.getContent(); // 修正sendEmail参数结构,将所有配置合并到同一个对象内,调整括号、分号到正确位置 MailApp.sendEmail({ to: recipientsTO, cc: recipientsCC, subject: Subject, htmlBody: html, attachments: [{ fileName: nameFile, content: contents, mimeType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }] }); }
补充说明:如果脚本是绑定在目标表格上的,不需要手动硬编码表格ID,直接取当前活动表格ID即可;MIME类型调整为标准xlsx格式标识,可避免附件类型识别异常。
内容的提问来源于stack exchange,提问作者Shrikant Ravi
相关产品推荐
相关产品推荐

