Поскольку replaceText
изменяет только текстовое содержимое, оставляя форматирование на месте, цель может быть достигнута путем применения форматирования перед заменой. Во-первых, findText
просматривает текст и устанавливает жирным шрифтом для каждого совпадения; затем replaceText
выполняет замену.
Необходимо рассмотреть два случая: сопоставляется только часть текста в элементе (что типично) и сопоставляется весь элемент. Свойство isPartial
класса RangeElement
различает их.
function replaceWithBold(pattern, newString) {
var body = DocumentApp.getActiveDocument().getBody();
var found = body.findText(pattern);
while (found) {
var elem = found.getElement();
if (found.isPartial()) {
var start = found.getStartOffset();
var end = found.getEndOffsetInclusive();
elem.setBold(start, end, true);
}
else {
elem.setBold(true);
}
found = body.findText(pattern, newString);
}
body.replaceText(pattern, newString);
}
Это похоже на большую работу для чего-то, что было бы тривиальным
Это правильно и типично для работы с Документами Google с использованием Apps Script.