【问题标题】:Remove Paragraph from ItemList从 ItemList 中删除段落
【发布时间】:2021-11-26 17:30:13
【问题描述】:

我有很多 GDocs 的编号很乱。从其他文档复制的部分文档,从 Word 文档 (docx) 复制的部分文档。

为了清理,我想遍历一个文档并删除编号。我能够遍历段落并识别标题段落,因此我可以清理作为文本本身一部分的编号(在行首),没有问题。

但大多数段落的编号来自“项目符号和编号”选项。我了解到这些段落是 ListItem 集合的一部分(这是一个数组吗?),我也可以遍历它。我可以使用setGlyphType 设置类型,但这不是我想要的,我根本不需要类型。

我想也许从列表中删除它可以解决这个问题,但我发现的唯一方法是 RemoveFromParent 删除整个段落。

当我在文档中时,我必须单击段落的开头并按两次 Backspace,但我找不到任何方法可以从每个脚本的段落中删除编号。

【问题讨论】:

  • 由于您已经可以访问ListItem,我认为您可以做的解决方法是 1. 获取父级。 2. 获取与项目符号元素等效的文本。 3. 从父级中删除项目符号元素。 4. 在此处插入一个段落,其中包含您刚刚复制的元素的文本。您可能需要格式化添加的段落,但我认为应该这样做。如果我成功了,我会尝试测试这个概念并为您提供答案。
  • @ASyntuBU 有趣的尝试,但这感觉很错误
  • 我已经让它在@FunThomas 下工作。检查它是否适用于您。

标签: google-apps-script google-docs


【解决方案1】:

我已成功实施上述解决方法。

脚本:

function Remove_Bullets() {
  var body = DocumentApp.getActiveDocument().getBody();
  for (var i = 0; i < body.getNumChildren(); i++) {
    var element = body.getChild(i);
    if (element.getType() == DocumentApp.ElementType.LIST_ITEM) {
      element.getParent().asBody()
             .insertParagraph(i, element.asText().getText())
             .setAttributes(element.getAttributes());
      element.removeFromParent();
    }
  }
}

示例:

变成:

注意:

  • 由于存储在项目符号/标题设置中,某些格式未正确应用,但仍应用了基本属性。

【讨论】:

  • 您好,感谢您的所有努力。我赞成它,虽然它并没有真正解决我的问题 - 虽然编号消失了,但线条保持缩进,因此我仍然必须手动浏览我的文档。也许真正的任务对于应用程序脚本是不可行的。我对 App Script 的研究越深入,我就越觉得 Google 对它的支持是半心半意的。
  • 有点奇怪。很抱歉无法解决您的问题。
猜你喜欢
  • 2012-01-28
  • 1970-01-01
  • 2020-10-08
  • 2014-11-10
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
相关资源
最近更新 更多