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

罗杰里奥·施密特

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

到目前为止,我的代码如下,除定位的图像外,所有内容均被删除

// 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();
  }
}

此代码大部分来自此处

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

Tanaike

不幸的是,当前阶段,在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服务
    • 开启Google Docs API v1

在API控制台上启用Google Docs API

  • 在脚本编辑器上
    • 资源->云平台项目
    • 查看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());
  }
}

参考文献:

如果我误解了您的问题,我深表歉意。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章