如何使用Google Apps脚本在Google文档中查找和删除空白段落?

时间:2016-10-10 16:07:53

标签: google-apps-script google-docs

我正在处理包含数百个空段落的Google文档。我想自动删除这些空行。

在LibreOffice Writer中,您可以使用Find&替换工具以替换^$什么都没有,但这在Google文档中不起作用。

My search for ^$ or ^\s*$ returned 0 results even though there should be 3 matches

如何使用Google Apps脚本删除空白段落?

我已尝试过body.findText("^$");,但会返回null

function removeBlankParagraphs(doc) {
    var body = doc.getBody();
    result = body.findText("^$");

}

2 个答案:

答案 0 :(得分:4)

我认为必须有一个最后的空段,但这似乎有效。

function myFunction() {
  var body = DocumentApp.getActiveDocument().getBody();

  var paras = body.getParagraphs();
  var i = 0;

  for (var i = 0; i < paras.length; i++) {
       if (paras[i].getText() === ""){
          paras[i].removeFromParent()
       }
}
}

答案 1 :(得分:2)

添加汤姆的回答和apmouse的评论,这是一个修订的解决方案:1)防止删除由图像或水平规则组成的段落; 2)还删除仅包含空格的段落。

function removeEmptyParagraphs() {
  var pars = DocumentApp.getActiveDocument().getBody().getParagraphs();
  // for each paragraph in the active document...
  pars.forEach(function(e) {
    // does the paragraph contain an image or a horizontal rule?
    // (you may want to add other element types to this check)
    no_img = e.findElement(DocumentApp.ElementType.INLINE_IMAGE)    === null;
    no_rul = e.findElement(DocumentApp.ElementType.HORIZONTAL_RULE) === null;
    // proceed if it only has text
    if (no_img && no_rul) {
      // clean up paragraphs that only contain whitespace
      e.replaceText("^\\s+$", "")
      // remove blank paragraphs
      if(e.getText() === "") {
        e.removeFromParent();
      }
    }    
  })
}