Как сделать так, чтобы весь документ Google Документов не был выделен? (Google Apps Script) - PullRequest
1 голос
/ 10 октября 2019

Я создаю программу, которая покажет вам наиболее часто используемые слова в документе Google Документы, а затем выделит их. Мне нужна кнопка меню, которая при нажатии отменяет выделение всего, что в данный момент выделено.

Я не смог найти никого, кто делал что-то подобное, поэтому я попытался сделать что-то вроде этого:

function onOpen() {
  var ui = DocumentApp.getUi();

  ui.createMenu("Extra Tools")
      .addItem('Clear Highlights', 'clear')
      )

  .addToUi();
}

function clear()
{
  var DocText = DocumentApp.getActiveDocument().getBody().getText();
  DocText.getElement().asText.setBackgroundColor("#FFFFFF");
}

, но это не сработало, выдав ошибку «TypeError: Невозможно найти функцию getElement в объекте (имя моего документа»

Есть ли способ установить подсветку / фонцвет всего документа белый / прозрачный?

1 Ответ

0 голосов
/ 11 октября 2019

Попробуйте это:

function clearHighLight() {
  var bgcolor='#ffffff';//white
  var doc=DocumentApp.getActiveDocument();
  var rangeBuilder=doc.newRange();
  var bdy=doc.getBody();
  var numCh=bdy.getNumChildren();
  for (var i=0;i<numCh;i++) {
    var child=bdy.getChild(i);//collect all range elements
    var all=rangeBuilder.addElement(child);
  }
  doc.setSelection(all);
  var selectedElements = all.getRangeElements();
  for(var i=0;i<selectedElements.length;i++) {
    var selElem = selectedElements[i];
    var el = selElem.getElement();
    var isPartial = selElem.isPartial();
    if(isPartial) {
      var selStart = selElem.getStartOffset();
      var selEnd = selElem.getEndOffsetInclusive();
      el.asText().setBackgroundColor(selStart, selEnd, bgcolor)      
    }else {
      var selStart = selElem.getStartOffset();
      var selEnd = selElem.getEndOffsetInclusive();
      el.asText().setBackgroundColor(bgcolor);
    }
  }
  var rg=doc.newRange();
  rg.addElement(bdy.getChild(0));//child zero normally has nothing in it
  doc.setSelection(rg.build());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...