如何在 Google Apps 脚本中用 Docs API 替换图像?

问题描述 投票:0回答:1

似乎我能找到的所有使用 Docs API 和 Apps 脚本的文档都已被弃用。我已经尝试了以下代码的许多变体,但我不断从最后一行收到 404 错误。我可以打印 doc 对象的属性并找到当前图像,所以这实际上只是更新请求,这似乎是问题所在。

function copyDoc() {
  request = {
    name: "Copy of Template",
  };
  doc = Drive.Files.copy(resource= request, fileId= '1AgUGJ5a0_O4U9Jnu9QWG5MX4BGwfmiZvv437xC1bZms');

  doc = Docs.Documents.get(doc.id, {'includeTabsContent': true});
  
  obj = doc.tabs[0].documentTab.inlineObjects
  obj_id = Object.entries(obj)[0][0]

  request = {
    "requests": [
      {
        "replaceImage": {
          "imageObjectId": obj_id,
          "uri": "https://dummyimage.com/300x200/000/fff",
          "imageReplaceMethod": 'CENTER_CROP',
        }
      }
    ],
  }

  Docs.Documents.batchUpdate(resource=request, documentId= doc.id)
}
google-apps-script google-docs-api
1个回答
0
投票

在你的展示脚本中,我认为需要将

doc.id
修改为
doc.documentId
。所以,请修改如下。

来自:

Docs.Documents.batchUpdate(resource=request, documentId= doc.id)

致:

Docs.Documents.batchUpdate(resource = request, documentId = doc.documentId);

另外,我认为您的显示脚本可以修改如下。

function copyDoc() {
  const fileId = "###"; // Please set your original Google Document ID.

  const request1 = { name: "Copy of Template" };
  const copiedFile = Drive.Files.copy(request1, fileId);
  const docId = copiedFile.id;
  const doc = Docs.Documents.get(docId, { 'includeTabsContent': true });
  const obj = doc.tabs[0].documentTab.inlineObjects;
  const obj_id = Object.entries(obj)[0][0];
  const request2 = {
    "requests": [
      {
        "replaceImage": {
          "imageObjectId": obj_id,
          "uri": "https://dummyimage.com/300x200/000/fff",
          "imageReplaceMethod": 'CENTER_CROP',
        }
      }
    ]
  };
  Docs.Documents.batchUpdate(request2, docId);
}

参考:

© www.soinside.com 2019 - 2024. All rights reserved.