Форматирование текста в ячейке googlesheet с использованием скрипта - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть лист Google, в котором отформатирован текст в ячейке. Часть текста имеет цвет и выделена жирным шрифтом. Я использую скрипт Google, чтобы добавить новый контент в ячейку. Когда я запускаю скрипт, добавляется новый контент, но форматирование старого контента удаляется.

1) Как сохранить форматирование старого контента при выполнении моего скрипта. 2) Я хочу сделать новый контент жирным и цветным. Как я могу отформатировать новый контент, который добавляется в ячейку?

Вот содержимое моей ячейки перед выполнением скрипта

Вот мой скрипт:

  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 = " ";
  cell.setValue(newContent + space + oldContent);

Вот содержимое моей ячейки после выполнения скрипта script

Как видите, форматирование было очищено для старого содержимого.

1 Ответ

2 голосов
/ 08 февраля 2020
  • Вы хотите добавить текст в начало текста в ячейке и поместить его в ячейку.
  • В этом случае вы хотите сохранить стиль текста исходного текста.
  • Вы хотите изменить стиль текста добавленного текста на «полужирный» и «ForegroundColor».
  • Вы хотите добиться этого с помощью скрипта Google Apps.

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

Точки изменения:

Когда значение задается с помощью setValue, кажется, что стиль текста очищен. Это может быть спецификацией. Так что в этом случае, чтобы установить стиль текста, я использовал Class TextStyleBuilder и Class RichTextValueBuilder. Процесс этого модифицированного сценария выглядит следующим образом.

Поток:
  1. Извлечение диапазона ячеек.
  2. Создание стиля текста для дополнительных текстов, которые newContent и space.
  3. Извлечение стиля текста исходных текстов oldContent.
  4. Создание нового RichTextValueBuilder.
  5. Установка новых текстов в RichTextValueBuilder.
  6. Установка текста стиль для RichTextValueBuilder.
  7. Поместите 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", который имеет стиль текста и запустите вышеуказанный скрипт, можно получить следующий результат.

До:

enter image description here

После:

enter image description here

Сохраняется оригинальный стиль текста, а дополнительный текст имеет стиль текста.

Ссылки:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...