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

Google Apps Script转Doc为HTML发邮件遇大小超限及图片丢失问题

问题分析与解决方案

一、邮件体大小超限问题

可能原因

  • Google Docs的HTML导出逻辑近期发生了更新,导出的HTML新增了冗余代码(如额外的内联样式、注释、编辑用脚本),导致体积超出MailApp的邮件体大小限制(MailApp单邮件大小上限为20MB,HTML字符数或内嵌资源会直接影响整体体积)。
  • 即使文档内容未改动,Google Docs内部的格式优化或规则调整,也可能让导出的HTML字节数大幅增加。

排查与解决

  1. 对比当前导出的HTML与之前正常运行时的文件大小,查看差异点(比如是否新增大量重复CSS规则、无用脚本标签)。
  2. 精简HTML内容:
    • 移除HTML中的<script>标签(Google Docs导出的编辑用脚本对邮件无意义)。
    • 删除HTML注释、冗余的样式规则,只保留邮件客户端兼容的核心样式。
    • 若文档包含图片,检查是否被转为base64内嵌(这会大幅增加体积),改为外部链接引用。

二、邮件中图片丢失问题

根本原因

Google Docs导出的HTML里,图片src是需要OAuth令牌授权的内部链接,邮件客户端无法获取该授权,因此无法加载图片。而浏览器编辑器中你处于登录状态,能正常访问这些链接,导致测试时显示正常但邮件中丢失。

解决方法

方案1:替换为公开可访问链接

  1. 将文档中的图片上传至Google Drive,设置为「任何人可查看」的公开权限。
  2. 获取图片的直接访问URL(需转换分享链接为可嵌入的直链格式)。
  3. 遍历导出的HTML,替换所有图片的src为公开链接。

方案2:转为base64内嵌HTML

  1. 通过UrlFetchApp携带OAuth令牌获取图片内容,转换为base64编码。
  2. 将HTML中图片的src替换为data:image/[格式];base64,[编码内容]格式的字符串。

代码修改示例

function getDocAsEmailHtml(id_doc) {
  var url = "https://docs.google.com/feeds/download/documents/export/Export?id=" + id_doc + "&exportFormat=html";
  var param = {
    method: "get",
    headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() },
    muteHttpExceptions: true,
  };
  var doc_html = UrlFetchApp.fetch(url, param).getContentText();
  
  // 精简HTML:移除无用脚本与注释
  doc_html = doc_html.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
  doc_html = doc_html.replace(/<!--[\s\S]*?-->/gi, '');
  
  // 处理图片:将Google Docs内部链接转为base64内嵌
  var imgRegex = /<img[^>]+src="([^"]+)"/gi;
  doc_html = doc_html.replace(imgRegex, function(match, src) {
    if (src.startsWith('https://docs.google.com')) {
      var imgParam = {
        headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() },
        muteHttpExceptions: true
      };
      var imgBlob = UrlFetchApp.fetch(src, imgParam).getBlob();
      var base64 = Utilities.base64Encode(imgBlob.getBytes());
      return '<img src="data:' + imgBlob.getContentType() + ';base64,' + base64 + '"';
    }
    return match;
  });
  
  return doc_html;
}

额外注意事项

  • 优先使用公开链接方案,过多base64内嵌图片会快速增加邮件体体积,容易再次触发大小限制。
  • 定期关注Google Workspace服务更新,Docs导出API可能随版本迭代调整,需及时适配逻辑。

内容的提问来源于stack exchange,提问作者Greg_apps_script

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:15:31