Как удалить текст из Google Docs с помощью скриптов приложений? - PullRequest
1 голос
/ 06 мая 2020

Я недавно создал серию документов, используя Google Script и Form / Sheets.

Документ создается в Google Docs с помощью сценария с использованием данных, предоставленных в исходной форме.

Настройка в основном следующая:

Условия для прохождения

  • Класс: {{CLASS}}
  • Минимальная оценка: {{MINIMUM_GRADE}} / 10
  • Минимальная посещаемость: {{ATTENDANCE_PERC}}% с минимум {{ ATTENDANCE}} посещаемости за семестр

Если ввод формы помещается между этими {{}}.

В настоящее время , в этом случае будет отображаться что-то вроде:

  • Класс: 3-й курс
  • Минимальная оценка: Не применимо / 10
  • Минимальная посещаемость: 70% при минимальной посещаемости 15 в семестре

Но я бы хотел:

  • Класс: 3-й курс
  • Минимальная посещаемость: 70% при минимальной посещаемости 15 за семестр

Есть ли способ заставить Google Script автоматически удалять любой из маркеров, например здесь "Mi nimum Grade ", если ответ на этот вопрос" Неприменимо "?

1 Ответ

0 голосов
/ 06 мая 2020

Ответ:

Вы можете получить всех дочерних элементов документа и удалить дочерний элемент из тела, если объект Element - это LIST_ITEM и Объект Element содержит текст «Неприменимо».

Дополнительная информация:

Структура документа довольно сложна, но зная, что данный дочерний элемент является типом элемента LIST_ITEM, вы можете проверить, содержит ли он требуемый текст, и впоследствии удалить дочерний элемент из тела документа.

Код:

function removeListItem() {
  var body = DocumentApp.getActiveDocument().getBody();
  var noOfChildren = body.getNumChildren();
  var childrenToRemove = [];
  
  for (var i = 0; i < noOfChildren; i++) {
    var child = body.getChild(i);
    var childType = child.getType();
    if (childType == DocumentApp.ElementType.LIST_ITEM) {
      if (child.asListItem().findText("Not Applicable") !== null ) {
        childrenToRemove.push(child); 
      }
    }
  }
  
  childrenToRemove.forEach(function(child) {
    try {
      body.removeChild(child);
    }
    catch(e) {
      Logger.log(e)
      if (e == "Exception: Can't remove the last paragraph in a document section.") {
        body.appendPageBreak()
        body.removeChild(child);
      }
    }
  });
}

Надеюсь, это будет вам полезно!

Ссылки:

...