如何从Google文档中删除已定位的图像?

时间:2019-03-31 04:01:23

标签: google-apps-script google-docs

我正在尝试创建一个功能,该功能将擦除Google文档中的所有内容。

到目前为止,我的代码如下,除positioned images以外,其他所有代码都没有。

// clears document
function eraseContent(){ 
  var body = DocumentApp.getActiveDocument().getBody();

  body.clear();

  // Remove all images in the document body.
  var imgs = body.getImages();
  for (var i = 0; i < imgs.length; i++) {
  imgs[i].removeFromParent();
  }
}

大部分代码来自here

我该怎么做才能从文档中删除定位的图像?

1 个答案:

答案 0 :(得分:1)

不幸的是,在当前阶段,还没有方法可以删除Class PositionedImage类中的定位图像。但是,当使用Google Docs API时,可以删除定位的图像。那么如何修改呢?修改后的脚本的流程如下。

  1. 检索段落。
  2. 检索已定位图像的对象ID。
  3. 使用检索到的对象ID为Google Docs API中的batchUpdate方法创建请求正文。
  4. 删除定位的图像。

要使用示例脚本,请在运行脚本之前先按以下步骤在高级Google服务和API控制台上启用Google Docs API。

在高级Google服务中启用Google Docs API

  • 在脚本编辑器上
    • 资源->高级Google服务
    • 打开Goog​​le Docs API v1

在API控制台上启用Google Docs API

  • 在脚本编辑器上
    • 资源-> Cloud Platform项目
    • View API控制台
    • 在“入门”中,单击“探索并启用API”。
    • 在左侧,单击库。
    • 在“搜索API和服务”中,输入“文档”。然后点击“ Google Docs API”。
    • 单击“启用”按钮。
    • 如果已启用API,请不要关闭。

修改后的脚本:

请按如下所示替换eraseContent()并运行它。

function eraseContent(){
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  body.clear();

  // Retrieve paragraphs.
  var paragraphs = body.getParagraphs();

  // Retrieve the object IDs of the positioned images.
  // Create request body for the method of batchUpdate in Google Docs API using the retrieved object IDs.
  var requests = paragraphs.reduce(function(ar, e) {
    return ar.concat(e.getPositionedImages().map(function(f) {
      return {deletePositionedObject: {objectId: f.getId()}}
    }));
  }, []);

  // Delete the positioned images.
  if (requests.length > 0) {
    Docs.Documents.batchUpdate({requests: requests}, doc.getId());
  }
}

参考文献:

如果我误解了你的问题,我表示歉意。