Я считаю, что ваша цель следующая.
- Вы хотите изменить стиль текста части текста в ячейке с помощью скрипта Google Apps (из вашего тега
google-sheets-macros
). - Вы хотите изменить
CODE
из NAME NAME | CODE
. - Вы не хотите изменять стиль текста
NAME NAME
+
+ |
+
. - Вы хотите изменить стиль текста только
CODE
. - Начиная с
Different font size is fine. If anyone is an expert with though, different colours and format would be amazing
, вы хотите изменить размер шрифта и цвет переднего плана текста. В этом случае format
, как вы ожидаете, будет жирным шрифтом и itali c?
- Вы хотите сохранить стиль текста
NAME NAME
из NAME NAME | CODE
.
Я думаю, что вышеуказанная цель может быть достигнута с помощью RichTextValue. В этом ответе я хотел бы предложить пример сценария.
Пример ситуации:
Этот пример сценария предполагает примерную ситуацию, когда значение NAME NAME | CODE
помещается в столбец «A» . Поэтому, чтобы протестировать его, подготовьте эту ситуацию.
Пример сценария:
Скопируйте и вставьте следующий сценарий в привязанный к контейнеру сценарий электронной таблицы и задайте имя листа.
function myFunction() {
const sheetName = "Sheet1"; // Please set the sheet name.
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName(sheetName);
const range = sheet.getRange("A1:A" + sheet.getLastRow());
const richTextValues = range.getRichTextValues().map(([a]) => {
const text = a.getText();
const pos = text.indexOf("|");
if (pos > -1) {
const temp = a.getTextStyle(0, pos - 1);
const textStyle = SpreadsheetApp.newTextStyle()
.setFontSize(5)
.setForegroundColor("red")
.setItalic(true)
.setBold(true)
.build();
return [
SpreadsheetApp.newRichTextValue()
.setText(text)
.setTextStyle(0, pos - 1, temp)
.setTextStyle(pos + 2, text.length, textStyle)
.build()
];
}
return [SpreadsheetApp.newRichTextValue().setText(text).setTextStyle(a.getTextStyle()).build()];
});
range.setRichTextValues(richTextValues);
}
Результат:
При запуске вышеуказанного скрипта стили текста столбца «A» переформатируются, и стиль текста CODE
изменяется, а стиль текста NAME NAME
из NAME NAME | CODE
не изменяется. Также не изменяется текстовый стиль ячейки без |
. Вы можете увидеть результат примера на следующем изображении.
Note:
- This sample script is a simple sample. So please modify it for your actual situation.
References:
Добавлено:
Если вы хотите преобразовать выбранный диапазон, как насчет следующего примера сценария? При использовании этого сценария сначала выберите диапазон и запустите этот сценарий. Таким образом, выбранный диапазон преобразуется.
function myFunction() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const select = ss.getSelection();
const sheet = select.getActiveSheet();
const range = select.getActiveRange();
const richTextValues = range.getRichTextValues().map(([a]) => {
const text = a.getText();
const pos = text.indexOf("|");
if (pos > -1) {
const temp = a.getTextStyle(0, pos - 1);
const textStyle = SpreadsheetApp.newTextStyle()
.setFontSize(5)
.setForegroundColor("red")
.setItalic(true)
.setBold(true)
.build();
return [
SpreadsheetApp.newRichTextValue()
.setText(text)
.setTextStyle(0, pos - 1, temp)
.setTextStyle(pos + 2, text.length, textStyle)
.build()
];
}
return [SpreadsheetApp.newRichTextValue().setText(text).setTextStyle(a.getTextStyle()).build()];
});
range.setRichTextValues(richTextValues);
}