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

如何在Google Apps Script中使用Docs API替换文档图片?

问题分析与解决

你的代码触发404错误,核心原因有两点:

  1. 文档结构解析错误:你错误通过doc.tabs[0].documentTab.inlineObjects获取图片ID,但当前Docs API v1的文档资源中不存在tabs层级,正确的内联对象存储在顶级属性inlineObjects中。
  2. 文档同步延迟:复制文档后立即调用batchUpdate,可能因文档未完成云端同步导致404。

修正后的代码

function copyDoc() {
  // 复制文档
  const copyRequest = {
    name: "Copy of Template"
  };
  const copiedFile = Drive.Files.copy(copyRequest, '1AgUGJ5a0_O4U9Jnu9QWG5MX4BGwfmiZvv437xC1bZms');
  const docId = copiedFile.id;

  // 等待文档同步(可选但建议添加)
  Utilities.sleep(2000);

  // 获取文档内容(无需废弃的includeTabsContent参数)
  const doc = Docs.Documents.get(docId);
  
  // 获取第一个内联图片的ID
  const inlineObjects = doc.inlineObjects;
  const objId = Object.keys(inlineObjects)[0];

  // 构建替换图片请求
  const updateRequest = {
    requests: [
      {
        replaceImage: {
          imageObjectId: objId,
          uri: "https://dummyimage.com/300x200/000/fff",
          imageReplaceMethod: "CENTER_CROP"
        }
      }
    ]
  };

  // 执行更新
  Docs.Documents.batchUpdate(updateRequest, docId);
}

额外注意事项

  • 确保已在Apps Script编辑器的服务面板中启用Drive API和Docs API。
  • 若仍出现404,检查复制后的文档是否存在于你的云端硬盘中,且脚本拥有该文档的访问权限。
  • 避免使用废弃的API参数,当前Docs API v1的官方规范可直接在Google开发者平台查询。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:02:02