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.