如何使用 Google Apps 脚本查找和删除 Google 文档中的空白段落?
How to find and remove blank paragraphs in a Google Document with Google Apps Script?
我正在处理 Google 包含数百个空段落的文档。我想自动删除这些空行。
在 LibreOffice Writer 中,您可以使用查找和替换工具将 ^$
替换为空,但这在 Google Docs 中不起作用。
My search for ^$
or ^\s*$
returned 0 results even though there should be 3 matches
如何使用 Google Apps 脚本删除空白段落?
我已经试过了body.findText("^$");
,但是returnsnull
function removeBlankParagraphs(doc) {
var body = doc.getBody();
result = body.findText("^$");
}
我认为必须有最后一个空白段落,但这似乎可行。
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()
}
}
}
添加到 Tom 的回答和 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();
}
}
})
}
我正在处理 Google 包含数百个空段落的文档。我想自动删除这些空行。
在 LibreOffice Writer 中,您可以使用查找和替换工具将 ^$
替换为空,但这在 Google Docs 中不起作用。
My search for ^$
or ^\s*$
returned 0 results even though there should be 3 matches
如何使用 Google Apps 脚本删除空白段落?
我已经试过了body.findText("^$");
,但是returnsnull
function removeBlankParagraphs(doc) {
var body = doc.getBody();
result = body.findText("^$");
}
我认为必须有最后一个空白段落,但这似乎可行。
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()
}
}
}
添加到 Tom 的回答和 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();
}
}
})
}