Как выполнить форматирование текста в Google Apps Script: полное руководство

Google Apps Script (GAS) предоставляет мощные инструменты для автоматизации задач в Google Workspace, включая форматирование текста в Google Docs и Sheets. Эффективное использование этих инструментов позволяет создавать профессионально выглядящие документы и таблицы, а также автоматизировать рутинные задачи.

Зачем форматировать текст в Google Apps Script?

Форматирование текста с помощью GAS позволяет:

Автоматизировать рутинные операции: Например, форматировать отчеты, счета или маркетинговые материалы.

Динамически изменять форматирование на основе данных: Изменять цвет текста в зависимости от значений в ячейках таблицы.

Создавать единообразный стиль документов: Обеспечивать консистентность форматирования во всех документах организации.

Улучшить читаемость и восприятие информации: Выделять важные моменты, структурировать текст и облегчать навигацию по документу.

Обзор сервисов Google Apps Script для работы с текстом

Для форматирования текста в GAS используются следующие сервисы:

Document Service: Для работы с Google Docs. Позволяет получать доступ к элементам документа (абзацам, таблицам, изображениям) и изменять их форматирование.

Spreadsheet Service: Для работы с Google Sheets. Предоставляет методы для изменения форматирования отдельных ячеек или диапазонов ячеек.

Форматирование текста в Google Docs с помощью Google Apps Script

Получение доступа к документу и его элементам

Прежде чем начать форматирование, необходимо получить доступ к нужному документу. Это можно сделать несколькими способами:

/**
 * Открывает документ по ID.
 * @param {string} documentId ID документа.
 * @return {GoogleAppsScript.Document.Document} Открытый документ.
 */
function openDocumentById(documentId: string): GoogleAppsScript.Document.Document {
  return DocumentApp.openById(documentId);
}

/**
 * Получает активный документ.
 * @return {GoogleAppsScript.Document.Document} Активный документ.
 */
function getActiveDocument(): GoogleAppsScript.Document.Document {
  return DocumentApp.getActiveDocument();
}

let doc = openDocumentById('your_document_id'); // Замените 'your_document_id' на фактический ID
let body = doc.getBody();

После получения доступа к документу, можно получить доступ к его элементам, например, к абзацам или таблицам:

let firstParagraph = body.getParagraphs()[0];

Изменение шрифта, размера и стиля текста

Для изменения шрифта, размера и стиля текста используются методы setFontFamily(), setFontSize() и setForegroundColor():

/**
 * Форматирует текст в абзаце.
 * @param {GoogleAppsScript.Document.Paragraph} paragraph Абзац для форматирования.
 * @param {string} fontFamily Название шрифта.
 * @param {number} fontSize Размер шрифта.
 * @param {string} color Цвет текста (hex).
 */
function formatParagraphText(paragraph: GoogleAppsScript.Document.Paragraph, fontFamily: string, fontSize: number, color: string) {
  paragraph.setFontFamily(fontFamily);
  paragraph.setFontSize(fontSize);
  paragraph.setForegroundColor(color);
}

formatParagraphText(firstParagraph, 'Arial', 12, '#0000FF'); // Синий Arial 12pt

Работа с жирным, курсивом и подчеркиванием

Для применения жирного, курсива и подчеркивания используются методы setBold(), setItalic() и setUnderline():

firstParagraph.setBold(true);
firstParagraph.setItalic(true);
firstParagraph.setUnderline(true);

Эти методы можно комбинировать для создания различных стилей.

Изменение цвета текста и фона

Для изменения цвета текста используется метод setForegroundColor(), а для изменения цвета фона – метод setBackgroundColor():

firstParagraph.setForegroundColor('#FF0000'); // Красный текст
firstParagraph.setBackgroundColor('#FFFF00'); // Желтый фон

Форматирование абзацев в Google Docs

Выравнивание текста (по левому краю, по центру, по правому краю, по ширине)

Для выравнивания текста в абзаце используются методы setAlignment() и константы DocumentApp.HorizontalAlignment:

/**
 * Выравнивает абзац.
 * @param {GoogleAppsScript.Document.Paragraph} paragraph Абзац для выравнивания.
 * @param {GoogleAppsScript.Document.HorizontalAlignment} alignment Тип выравнивания.
 */
function alignParagraph(paragraph: GoogleAppsScript.Document.Paragraph, alignment: GoogleAppsScript.Document.HorizontalAlignment) {
  paragraph.setAlignment(alignment);
}

alignParagraph(firstParagraph, DocumentApp.HorizontalAlignment.CENTER); // Выравнивание по центру

Доступные значения DocumentApp.HorizontalAlignment:

LEFT

CENTER

RIGHT

JUSTIFY

Установка отступов и интервалов

Для установки отступов и интервалов используются методы setIndentFirstLine(), setIndentStart(), setIndentEnd() и setSpacingAfter():

Реклама
firstParagraph.setIndentFirstLine(36); // Отступ первой строки 36 пунктов
firstParagraph.setIndentStart(72);    // Отступ слева 72 пункта
firstParagraph.setSpacingAfter(12);    // Интервал после абзаца 12 пунктов

Работа с нумерованными и маркированными списками

Для создания нумерованных и маркированных списков необходимо работать с элементами списка (ListItems):

let list = body.appendListItem('Item 1');
list.setGlyphType(DocumentApp.GlyphType.NUMBER); // Нумерованный список

Доступные типы маркеров (DocumentApp.GlyphType):

NUMBER

BULLET

CHECKBOX

и другие.

Форматирование текста в Google Sheets с помощью Google Apps Script

Получение доступа к таблице и ячейкам

Аналогично работе с Google Docs, сначала необходимо получить доступ к таблице и ячейкам:

/**
 * Открывает таблицу по ID.
 * @param {string} spreadsheetId ID таблицы.
 * @return {GoogleAppsScript.Spreadsheet.Spreadsheet} Открытая таблица.
 */
function openSpreadsheetById(spreadsheetId: string): GoogleAppsScript.Spreadsheet.Spreadsheet {
  return SpreadsheetApp.openById(spreadsheetId);
}

/**
 * Получает активную таблицу.
 * @return {GoogleAppsScript.Spreadsheet.Spreadsheet} Активная таблица.
 */
function getActiveSpreadsheet(): GoogleAppsScript.Spreadsheet.Spreadsheet {
  return SpreadsheetApp.getActiveSpreadsheet();
}

let ss = openSpreadsheetById('your_spreadsheet_id'); // Замените 'your_spreadsheet_id' на фактический ID
let sheet = ss.getActiveSheet();
let cell = sheet.getRange('A1');

Изменение шрифта, размера и стиля текста в ячейках

Для изменения шрифта, размера и стиля текста в ячейках используются методы setFontFamily(), setFontSize() и setFontColor():

cell.setFontFamily('Arial');
cell.setFontSize(12);
cell.setFontColor('#0000FF');

Работа с жирным, курсивом и подчеркиванием в ячейках

Для применения жирного, курсива и подчеркивания используются методы setBold(), setItalic() и setUnderline():

cell.setBold(true);
cell.setItalic(true);
cell.setUnderline(true);

Изменение цвета текста и фона ячеек

Для изменения цвета текста используется метод setFontColor(), а для изменения цвета фона – метод setBackground():

cell.setFontColor('#FF0000'); // Красный текст
cell.setBackground('#FFFF00'); // Желтый фон

Выравнивание текста в ячейках (по горизонтали и вертикали)

Для выравнивания текста в ячейках используются методы setHorizontalAlignment() и setVerticalAlignment():

cell.setHorizontalAlignment('center');
cell.setVerticalAlignment('middle');

Возможные значения:

setHorizontalAlignment(): 'left', 'center', 'right'

setVerticalAlignment(): 'top', 'middle', 'bottom'

Примеры продвинутого форматирования текста

Создание функций для повторного использования форматирования

Чтобы избежать повторения кода, создавайте функции для форматирования:

/**
 * Форматирует диапазон ячеек.
 * @param {GoogleAppsScript.Spreadsheet.Range} range Диапазон для форматирования.
 * @param {string} fontFamily Название шрифта.
 * @param {number} fontSize Размер шрифта.
 * @param {string} color Цвет текста (hex).
 * @param {boolean} bold Жирный.
 */
function formatRange(range: GoogleAppsScript.Spreadsheet.Range, fontFamily: string, fontSize: number, color: string, bold: boolean) {
  range.setFontFamily(fontFamily)
       .setFontSize(fontSize)
       .setFontColor(color)
       .setBold(bold);
}

let range = sheet.getRange('A1:B2');
formatRange(range, 'Arial', 10, '#000000', true);

Автоматическое форматирование на основе данных

Можно динамически форматировать текст в зависимости от данных. Например, выделить ячейки, содержащие значения выше определенного порога:

/**
 * Подсвечивает ячейки с высокими значениями.
 * @param {GoogleAppsScript.Spreadsheet.Sheet} sheet Лист таблицы.
 * @param {number} threshold Пороговое значение.
 */
function highlightHighValues(sheet: GoogleAppsScript.Spreadsheet.Sheet, threshold: number) {
  let dataRange = sheet.getDataRange();
  let values = dataRange.getValues();

  for (let i = 0; i < values.length; i++) {
    for (let j = 0; j  threshold) {
        sheet.getRange(i + 1, j + 1).setBackground('#FF0000'); // Красный фон
      }
    }
  }
}

highlightHighValues(sheet, 1000); // Подсветить значения больше 1000

Использование HTML для форматирования текста (ограничения и возможности)

В Google Sheets можно использовать HTML-форматирование, но с ограничениями. Например, можно использовать теги <b>, <i>, <u> и <font>.

let richTextValue = SpreadsheetApp.newRichTextValue()
  .setText('This is bold and italic text.')
  .setTextStyle(8, 12, SpreadsheetApp.newTextStyle().setBold(true).build())
  .build();

sheet.getRange('A1').setRichTextValue(richTextValue);

Важно помнить, что не все HTML-теги поддерживаются. Этот метод полезен для базового форматирования, но для более сложного форматирования лучше использовать встроенные методы Google Apps Script.


Добавить комментарий