- Вы хотите добавить текст в начало текста в ячейке и поместить его в ячейку.
- В этом случае вы хотите сохранить стиль текста исходного текста.
- Вы хотите изменить стиль текста добавленного текста на «полужирный» и «ForegroundColor».
- Вы хотите добиться этого с помощью скрипта Google Apps.
Если мое понимание верно, как насчет этого ответа? Пожалуйста, воспринимайте это как один из нескольких возможных ответов.
Точки изменения:
Когда значение задается с помощью setValue
, кажется, что стиль текста очищен. Это может быть спецификацией. Так что в этом случае, чтобы установить стиль текста, я использовал Class TextStyleBuilder и Class RichTextValueBuilder. Процесс этого модифицированного сценария выглядит следующим образом.
Поток:
- Извлечение диапазона ячеек.
- Создание стиля текста для дополнительных текстов, которые
newContent
и space
. - Извлечение стиля текста исходных текстов
oldContent
. - Создание нового RichTextValueBuilder.
- Установка новых текстов в RichTextValueBuilder.
- Установка текста стиль для RichTextValueBuilder.
- Поместите RichTextValueBuilder в ячейку.
Модифицированный скрипт:
Когда ваш скрипт изменяется, он становится следующим. Пожалуйста, выберите ячейку, включающую oldContent
и запустите скрипт. Таким образом, newContent
и space
добавляются к oldContent
и устанавливаются стили текста.
function CreateIssue() {
var spreadsheet = SpreadsheetApp.getActive();
var cell = spreadsheet.getCurrentCell();
var oldContent = cell.getValue();
var newContent = 'Group:\n\nDescription:\n\nExpected Results:\n\nActual Results:\n\nTest Results:\n\nTest Data:';
var space = " ";
// I added below script.
var newStyles = [{
start: 0,
end: newContent.length,
style: SpreadsheetApp.newTextStyle().setBold(true).setForegroundColor("green").build()
}];
var richTextValue = cell.getRichTextValue();
var offset = newContent.length + space.length;
var oldContent = richTextValue.getText();
if (oldContent.length > 0) {
richTextValue.getRuns().forEach(function(e) {
newStyles.push({
start: offset + e.getStartIndex(),
end: offset + e.getEndIndex(),
style: e.getTextStyle()
});
});
}
var richText = SpreadsheetApp.newRichTextValue().setText(newContent + space + oldContent);
newStyles.forEach(function(e) {richText.setTextStyle(e.start, e.end, e.style)});
cell.setRichTextValue(richText.build());
}
- В приведенном выше сценарии дополнительный текст выделяется жирным и зеленым цвет. Об этом, когда вы хотите изменить цвет, пожалуйста, измените его.
Результат:
Когда установлено var newContent = "foo";
и выберите ячейку, включающую текст "bar", который имеет стиль текста и запустите вышеуказанный скрипт, можно получить следующий результат.
До:
После:
Сохраняется оригинальный стиль текста, а дополнительный текст имеет стиль текста.
Ссылки:
Если я неправильно понял ваш вопрос, и это не то направление, в котором вы хотите, я приношу свои извинения.