Как удалить пустые строки в Google doc с помощью редактора скриптов (надстройки Google Docs)?

Я создаю надстройку Google Docs, и одна из функций, которые я пытаюсь создать, - это функция, которая уменьшает количество пустых строк между двумя абзацами.

Так, например, если у меня есть 2 абзаца с 5 пустыми / пустыми строками между ними, я хочу, чтобы функция уменьшила количество пустых строк до 1.

По сути, мне нужен способ обнаружить пустую строку. Я просмотрел API и думаю, что мне нужно использовать метод replaceText (), который ищет шаблон регулярного выражения. Тем не менее, я попробовал, и это не сработало (возможно, я использую неправильную скороговорку, я не знаю).

Может ли кто-нибудь помочь мне найти способ обнаружить пустую строку? Спасибо.

РЕДАКТИРОВАТЬ:

Я только что узнал, что Документы Google не поддерживают все шаблоны регулярных выражений. Вот эта ссылка: https://support.google.com/analytics/answer/1034324?hl=en. Я не знаком с регулярным выражением. Может ли кто-нибудь предоставить альтернативу, которая работает в Google Docs.


person lakshhk4    schedule 06.08.2020    source источник
comment
В регулярном выражении ^ - начало строки, $ - конец, а \s - пробел. Объедините все вместе - попробуйте использовать ^\s*$ aestrisks означает любое количество пробелов   -  person Meir Gabay    schedule 06.08.2020
comment
в этом есть смысл. но почему-то все равно не работает.   -  person lakshhk4    schedule 06.08.2020
comment
Я заинтригован, решил это и отправил обратно решение   -  person Meir Gabay    schedule 06.08.2020


Ответы (1)


Написал и протестировал приведенную ниже функцию, вот шаги, чтобы заставить ее работать

  1. Скопируйте отсюда текст Lorem Ipsum Google Doc в новый документ Google.

  2. Добавьте приведенный ниже фрагмент в свои Инструменты ›Редактор скриптов› проект

  3. Встроенные комментарии

// Regular expressions with the following special characters are not supported, 
// as they can cause delays in processing your email: * (asterisk), + (plus sign)
// So RegEx is not applicable since you can't use "\s*", we need to find another solution

// A row/line is a Paragraph, weird right? So now you iterate through the rows
// Trim paragraph (row), if it's empty, then you can delete it.

function removeEmptyLines() {
  var doc = DocumentApp.getActiveDocument();
  Logger.log("Before:\n", doc.getBody().getText());  
  
  var paragraphs = doc.getBody().getParagraphs();
  // Iterating from the last paragraph to the first
  for (var i=paragraphs.length-1; i>=0; i--){
    var line = paragraphs[i];
    if ( ! line.getText().trim() ) {
      // Paragraph (line) is empty, remove it
      line.removeFromParent()
      Logger.log("Removed: ", i);
    }
  }
  Logger.log("After:\n", doc.getBody().getText());
}
References
  1. https://developers.google.com/apps-script/reference/document/text#replaceText(String,String)
  2. https://support.google.com/a/answer/1371415?hl=en
  3. https://stackoverflow.com/a/3012832/5285732
person Meir Gabay    schedule 06.08.2020