Могу ли я покрасить определенные слова в Документе Google с помощью Google Apps Script?

Я пытаюсь выделить определенные слова в своем Документе Google. Я знаю, что я могу заменить текст, используя document.replace, но он заменяет только строку, а не форматирование. Есть ли способ заменить строку цветной строкой с помощью Google Apps Script?

Это лучшее решение:

function highlightTextTwo() { var doc = DocumentApp.openById(' 

Предыдущий ответ:

Ключ состоит в том, чтобы иметь возможность ссылаться только на слова, которые вы хотите покрасить.

Мое решение:

Получите текст абзаца, который содержит слова, которые вы хотите покрасить, удалите исходный абзац, а затем добавьте каждую часть текста назад. Когда вы добавляете каждую часть назад, appendText возвращает ссылку только на добавленный текст, вы можете указать свой цвет с помощью setForegroundColor ():

 function highlightText() { var doc = DocumentApp.openById(''); var textToHighlight = 'dusty death'; var textLength = textToHighlight.length; var paras = doc.getParagraphs(); var paraText = ''; var start; for (var i=0; i= 0) { var preText = paraText.substr(0, start); var text = paraText.substr(start, textLength); var postText = paraText.substr(start + textLength, paraText.length); doc.removeChild(paras[i]); var newPara = doc.insertParagraph(i, preText); newPara.appendText(text).setForegroundColor('#FF0000'); newPara.appendText(postText).setForegroundColor('#000000'); } } } 

С введением скриптов, связанных с документами, теперь можно сделать функцию подсветки текста, которая вызывается из пользовательского меню.

Конечно, это лучший ответ сейчас! 8 ^)

Этот скрипт был изменен с того, который был указан в этом ответе , и может быть вызван из пользовательского интерфейса (без параметров) или скрипта.

 /** * Find all matches of target text in current document, and highlight them. * * @param {String} target (Optional) The text or regex to search for. * See Body.findText() for details. * @param {String} background (Optional) The desired highlight color. * A default orange is provided. */ function highlightText(target,background) { // If no search parameter was provided, ask for one if (arguments.length == 0) { var ui = DocumentApp.getUi(); var result = ui.prompt('Text Highlighter', 'Enter text to highlight:', ui.ButtonSet.OK_CANCEL); // Exit if user hit Cancel. if (result.getSelectedButton() !== ui.Button.OK) return; // else target = result.getResponseText(); } var background = background || '#F3E2A9'; // default color is light orangish. var doc = DocumentApp.getActiveDocument(); var bodyElement = DocumentApp.getActiveDocument().getBody(); var searchResult = bodyElement.findText(target); while (searchResult !== null) { var thisElement = searchResult.getElement(); var thisElementText = thisElement.asText(); //Logger.log(url); thisElementText.setBackgroundColor(searchResult.getStartOffset(), searchResult.getEndOffsetInclusive(),background); // search for next match searchResult = bodyElement.findText(target, searchResult); } } /** * Create custom menu when document is opened. */ function onOpen() { DocumentApp.getUi().createMenu('Custom') .addItem('Text Highlighter', 'highlightText') .addToUi(); } 

Я думаю, что это возможно с помощью метода setBackgroundColor classа Text в DocumentApp: https://developers.google.com/apps-script/class_text#setBackgroundColor

Вам нужно будет вернуть свои слова в виде текстовых элементов. Для этого вы можете использовать метод find вашего документа Document, затем перебирать результаты поиска и использовать getElement . Наконец, чтобы преобразовать объект Element в объект Text, вы можете использовать asText() .

Надеюсь, это сработает! 😉

Это доступно в качестве дополнения к документам Google с именем Multi-instance Text Highlighting. Подсказки: сначала это не сработало, но я закрыл свой документ и снова открыл его, а затем он сработал. Затем, похоже, это не работало, но я узнал, что специальные символы в вашей текстовой строке могут сломать ее; Я думаю, что у меня была + в моей строке, и она просто ничего не делала. Но без специальных символов он отлично работает. Действительно помог мне.

  • Создание якорных комментариев программным способом в Документах Google
  • Давайте будем гением компьютера.