Как удалить пустые строки в google do c с помощью редактора скриптов (надстройки Google Docs)? - PullRequest
2 голосов
/ 06 августа 2020

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

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

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

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

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

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

1 Ответ

1 голос
/ 07 августа 2020

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

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

  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());
}
Ссылки
  1. https://developers.google.com/apps-script/reference/document/text#replaceText (Строка, Строка)
  2. https://support.google.com/a/answer/1371415?hl=en
  3. { ссылка }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...