【问题标题】:Google Docs Apps script - how to remove really empty paragraphsGoogle Docs Apps 脚本 - 如何删除真正空的段落
【发布时间】:2017-02-13 21:28:33
【问题描述】:

我们如何从 Google 文档中删除 真正 空段落? 此代码将删除任何包含图像、hr 等的段落。不明白如何检查段落是否真的为空? getText()editAsText() 对此一无所知。

var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var docParagraphs = doc.getBody().getParagraphs();

for (var i = 0; i < docParagraphs.length; i++) {
    if (docParagraph[i].getText() === '') {
      docParagraphs[i].removeFromParent();
    }
}

我知道有一些主题与~类似的问题有关,但不一样。 How to find and remove blank paragraphs in a Google Document with Google Apps Script?

UPD:正确答案:

var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();

for (var i = 0; i < doc.getBody().getParagraphs().length; i++) {
  if (docParagraph[i].getText() === '') {
    if (docParagraph_i.getNumChildren() == 0 && i < (docParagraphs.length - 1)) {
      docParagraph[i].removeFromParent();
    }
  }
}

我也更改了表达式,以通过当前元素计数限制 i,而不是存储在变量中。因为元素被删除(或在其他实现中添加,例如),当没有段落但循环想要获取它们时会出现错误。

&& i < (...)

因为最后一段不能删除,会报错。

【问题讨论】:

    标签: google-apps-script google-docs


    【解决方案1】:

    你会想要检查段落中的孩子

    paragraph.getNumChildren() //returns the number of children

    【讨论】:

    • 我之前尝试过 .getNumChildren() ,之前尝试过 .getChild().getType() 几次都没有运气,但您的回答告诉我再次检查。我在提出问题后停顿了一下,现在我清楚地发现我使用 .getNumChildren() 不是段落而是它的第一个可能的孩子(通过 .getChild())并且不明白为什么它甚至在 .得到孩子()。第一个这样的段落真的很空白......谢谢!
    猜你喜欢
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    相关资源
    最近更新 更多