Таблицы Google, два размера шрифта, одна ячейка - PullRequest
0 голосов
/ 10 июля 2020

У меня есть электронная таблица с сотнями строк данных, взятых из списков проверки данных.

Некоторые данные очень важны, поэтому я хотел бы, чтобы они были больше, некоторые полезны, но для большинства излишни.

Другой размер шрифта - это нормально. Если кто-то является экспертом в этом вопросе, разные цвета и формат были бы замечательными

Мне нужно, чтобы скрипт был динамическим c в том смысле, что данные слева от | форматируется в одну сторону и справа от | по-другому.

введите описание изображения здесь

1 Ответ

1 голос
/ 11 июля 2020

Я считаю, что ваша цель следующая.

  • Вы хотите изменить стиль текста части текста в ячейке с помощью скрипта 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 не изменяется. Также не изменяется текстовый стиль ячейки без |. Вы можете увидеть результат примера на следующем изображении.

enter image description here

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);
}
  • Если вы хотите поместить преобразованные значения в одну правую часть столбца, измените приведенный выше сценарий следующим образом.

    • От

        range.setRichTextValues(richTextValues);
      
    • К

        range.offset(0, 1).setRichTextValues(richTextValues);
      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...