Как искать текст в документе Google по цвету фона? - PullRequest
1 голос
/ 03 марта 2020

Я пытаюсь установить цвет фона текста определенного цвета на другой цвет в файле Google Do c.

По сути, я хотел бы проанализировать его, и, когда я нахожу текст, имеющий цвет фона "x", я хочу изменить его на цвет фона "y" с помощью Apps Script.

Вот код, который я использовал

function onOpen() {
      DocumentApp.getUi()
          .createMenu('Utilities')
          .addItem('Auto-Replace', 'replaceSuits')
          .addToUi();
    };

function replaceSuits() {
  var doc  = DocumentApp.getActiveDocument(); 
  var body = doc.getBody();      
  var text = body.editAsText();

  var found = text.getBackgroundColor() === '#ff8c82';
  var apple = body.findText(found);

  while (apple) {
    var elem = apple.getElement();
    if (apple.isPartial()) {
      var start = apple.getStartOffset();
      var end = apple.getEndOffsetInclusive();
      elem.setBackgroundColor(start, end, "#000000");
    }
    else {
      elem.setBackgroundColor("#000000");
    }
    apple = body.findText(found, found);
  }
};

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

Любые мысли о том, как go об этом эффективно?

1 Ответ

2 голосов
/ 03 марта 2020
  • Вы хотите изменить цвет фона текста с #ff8c82 до #000000 в документе Google.
  • Вы хотите добиться этого с помощью скрипта Google Apps.

Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Точка модификации:

  • В вашем случае цвет изменяется путем проверки цвета из текстового объекта, полученного с помощью body.editAsText().

Модифицированный скрипт:

function replaceSuits() {
  var doc  = DocumentApp.getActiveDocument(); 
  var body = doc.getBody();
  var text = body.editAsText();

  // I modified below script.
  for (var i = 0; i < text.getText().length; i++)
    if (text.getBackgroundColor(i) == "#ff8c82") text.setBackgroundColor(i, i, "#000000");
}

Ссылки:

Если я неправильно понял ваш вопрос и это не то направление, которое вы хотите, я приношу свои извинения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...