2017-02-13 18 views
0

Как мы можем удалить действительно пустые абзацы из Google Документа? Этот код удалит любые абзацы, содержащие изображения, hr и т. Д. Не можете понять, как проверить, действительно ли абзац пуст? getText() и editAsText() ничего не дает.Скрипт Google Docs Apps - как удалить действительно пустые абзацы

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 < (...) 

поскольку последний абзац не может быть удален и выдает сообщение об ошибке.

ответ

0

Вы хотите проверить для детей в пункте

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

+0

Я попытался .getNumChildren() раньше, и я попытался .getChild(). GetType() до нескольких раз не повезло, но ваш ответ сказал мне снова проверить. Я сделал паузу после того, как задал вопрос, и теперь с ясным умом обнаружил, что я использовал .getNumChildren() не для абзаца, а для первого возможного его дочернего элемента (по .getChild()) и не понял, почему он выдает ошибку даже в. GetChild(). Первый такой абзац был действительно пустым ... Thanx! – Bowman