You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 16:21:33