Как найти и удалить пустые абзацы в документе Google с помощью скрипта Google Apps?
Я работаю с документами Google, которые содержат сотни пустых абзацев. Я хочу удалить эти пустые строки автоматически.
В LibreOffice Writer вы можете использовать инструмент Найти и заменить, чтобы заменить ^$
ни с чем, но это не сработало в Google Docs.
Мой поиск ^$
или же ^\s*$
вернул 0 результатов, хотя должно быть 3 совпадения
Как удалить пустые абзацы с помощью скрипта Google Apps?
Я уже пробовала body.findText("^$");
но это возвращает null
function removeBlankParagraphs(doc) {
var body = doc.getBody();
result = body.findText("^$");
}
3 ответа
Я думаю, что должен быть последний пустой абзац, но это, кажется, работает.
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()
}
}
}
В дополнение к ответу Тома и комментарию 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();
}
}
})
}
function DeleteEmpty(doc)
{
var body = doc.getBody();
var paragraphs = body.getParagraphs();
for (var i = 0; i < paragraphs.length; i++) {
var paragraph = paragraphs[i];
if (paragraph.getNumChildren() == 0 && paragraph.getPositionedImages().length == 0) {
paragraph.removeFromParent();
}
}
}
Это решение учитывает PositionedImages, которые отсутствовали в других решениях и могли быть удалены.