Как искать текст в гугл-документе по цвету фона?

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

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

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

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);
  }
};

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

Любые мысли о том, как сделать это эффективным образом?


person Light    schedule 03.03.2020    source источник


Ответы (1)


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

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

Пункт модификации:

  • В вашем случае цвет изменяется путем проверки цвета из текстового объекта, полученного 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");
}

Рекомендации:

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

person Tanaike    schedule 03.03.2020