Что такое Google Apps Script и его возможности
Google Apps Script (GAS) — это облачная платформа разработки, позволяющая автоматизировать задачи и расширять функциональность Google Workspace (Sheets, Docs, Drive, Gmail и т.д.). GAS использует JavaScript в качестве языка программирования, что делает его доступным для многих разработчиков. Вы можете использовать GAS для создания пользовательских функций, автоматизации рабочих процессов и интеграции сервисов Google с другими приложениями.
Преимущества автоматизации отправки таблиц
Автоматизация отправки таблиц через Google Apps Script предоставляет ряд преимуществ:
Экономия времени: Автоматическая отправка таблиц по расписанию устраняет необходимость ручного выполнения этой задачи.
Уменьшение ошибок: Исключается человеческий фактор при копировании и вставке данных.
Централизованное управление: Весь процесс отправки контролируется одним скриптом, что облегчает его обслуживание и изменение.
Персонализация: Можно настроить формат отправляемых данных и содержание писем.
Необходимые условия: доступ к Google Sheets и знание JavaScript
Для работы с Google Apps Script и отправки таблиц по электронной почте необходимо:
Доступ к Google Sheets.
Базовые знания JavaScript. Понимание переменных, функций, циклов и условных операторов.
Понимание структуры Google Sheets (таблицы, листы, ячейки, диапазоны).
Подготовка таблицы Google Sheets для отправки
Выбор таблицы и диапазона данных для отправки
Первым шагом является определение таблицы Google Sheets и диапазона данных, которые вы хотите отправить по электронной почте. Например, это может быть вся таблица, определенный лист или только часть листа, содержащая нужную информацию.
Форматирование данных в таблице (по желанию)
По желанию, перед отправкой можно отформатировать данные в таблице. Это может включать изменение формата чисел, дат, добавление границ, изменение цвета фона и т.д. Форматирование, выполненное в Google Sheets, будет сохранено при отправке таблицы в формате HTML.
Создание копии таблицы (по желанию, для сохранения оригинала)
Рекомендуется создавать копию таблицы перед отправкой, особенно если скрипт вносит какие-либо изменения в данные. Это позволит сохранить оригинальные данные в целости и сохранности. Создание копии можно выполнить вручную или автоматизировать с помощью GAS.
Написание кода Google Apps Script для отправки таблицы
Открытие редактора скриптов Google Apps Script
Чтобы открыть редактор скриптов Google Apps Script, откройте таблицу Google Sheets, выберите Инструменты -> Редактор скриптов. Откроется новое окно с редактором кода.
Получение доступа к таблице и диапазону данных
В редакторе скриптов необходимо получить доступ к таблице и диапазону данных, которые вы хотите отправить. Для этого используются методы SpreadsheetApp.getActiveSpreadsheet() (для получения активной таблицы), getSheetByName() (для получения листа по имени) и getDataRange() или getRange() (для получения диапазона данных).
Преобразование данных таблицы в HTML или CSV формат
Данные таблицы необходимо преобразовать в формат, который можно прикрепить к электронному письму. Наиболее распространенными форматами являются HTML и CSV. HTML позволяет сохранить форматирование таблицы, а CSV представляет собой простой текстовый формат с разделителями.
Создание и отправка электронного письма с таблицей в виде вложения
Для создания и отправки электронного письма используется класс MailApp или GmailApp. Необходимо указать адрес получателя, тему письма, текст письма и вложение (таблица в формате HTML или CSV).
Примеры кода и пояснения
Пример 1: Отправка таблицы в формате CSV
/**
* Отправляет таблицу Google Sheets в формате CSV по электронной почте.
*/
function sendSheetAsCSV() {
/** @type {string} */
const recipient = "recipient@example.com";
/** @type {string} */
const subject = "Таблица в формате CSV";
/** @type {string} */
const body = "Во вложении таблица в формате CSV.";
/** @type {Spreadsheet} */
const ss = SpreadsheetApp.getActiveSpreadsheet();
/** @type {Sheet} */
const sheet = ss.getActiveSheet();
/** @type {GoogleAppsScript.Spreadsheet.Range} */
const dataRange = sheet.getDataRange();
/** @type {Array<Array>} */
const data = dataRange.getValues();
// Преобразование данных в CSV формат
let csvContent = data.map(row => row.join(",")).join("\n");
// Создание Blob для вложения
/** @type {Blob} */
const blob = Utilities.newBlob(csvContent, "text/csv", "table.csv");
// Отправка электронного письма
GmailApp.sendEmail(recipient, subject, body, {
attachments: [blob]
});
Logger.log("Письмо с таблицей в формате CSV отправлено.");
}Пример 2: Отправка таблицы в формате HTML
/**
* Отправляет таблицу Google Sheets в формате HTML по электронной почте.
*/
function sendSheetAsHTML() {
/** @type {string} */
const recipient = "recipient@example.com";
/** @type {string} */
const subject = "Таблица в формате HTML";
/** @type {string} */
const body = "Во вложении таблица в формате HTML.";
/** @type {Spreadsheet} */
const ss = SpreadsheetApp.getActiveSpreadsheet();
/** @type {Sheet} */
const sheet = ss.getActiveSheet();
/** @type {GoogleAppsScript.Spreadsheet.Range} */
const dataRange = sheet.getDataRange();
/** @type {Array<Array>} */
const data = dataRange.getValues();
// Преобразование данных в HTML формат
let htmlTable = "";
for (let i = 0; i < data.length; i++) {
htmlTable += "";
for (let j = 0; j < data[i].length; j++) {
htmlTable += `${data[i][j]} `;
}
htmlTable += " ";
}
htmlTable += "
";
// Создание Blob для вложения
/** @type {Blob} */
const blob = Utilities.newBlob(htmlTable, "text/html", "table.html");
// Отправка электронного письма
GmailApp.sendEmail(recipient, subject, body, {
htmlBody: body + "
" + htmlTable, // Include HTML table in the email body for display
attachments: [blob]
});
Logger.log("Письмо с таблицей в формате HTML отправлено.");
}Разбор кода: Объяснение ключевых функций и параметров
SpreadsheetApp.getActiveSpreadsheet(): Возвращает активную таблицу Google Sheets.
sheet.getDataRange(): Возвращает диапазон данных, содержащий все данные на листе.
dataRange.getValues(): Возвращает двумерный массив, содержащий значения из диапазона данных.
Utilities.newBlob(data, mimeType, filename): Создает Blob (Binary Large Object) из данных, указывая MIME-тип и имя файла.
GmailApp.sendEmail(recipient, subject, body, options): Отправляет электронное письмо. recipient — адрес получателя, subject — тема письма, body — текст письма, options — объект с дополнительными параметрами, такими как вложения.
Расширенные возможности и советы
Автоматизация отправки по расписанию (триггеры)
Google Apps Script позволяет автоматизировать отправку таблиц по расписанию с помощью триггеров. Триггеры могут запускать скрипт ежедневно, еженедельно, ежемесячно или по определенному времени. Для настройки триггеров выберите Редактировать -> Триггеры текущего проекта в редакторе скриптов.
Обработка ошибок и логирование
Важно обрабатывать ошибки в скрипте и логировать информацию для отладки. Для обработки ошибок используйте блоки try...catch. Для логирования используйте Logger.log(). Сообщения, отправленные через Logger.log(), можно просмотреть в разделе Просмотр -> Журналы в редакторе скриптов.
Настройка шаблона письма (тема, текст)
Вместо жестко закодированных значений для темы и текста письма можно использовать шаблоны. Например, можно подставлять текущую дату или другую информацию из таблицы в тему или текст письма.
Отправка таблицы нескольким получателям
Для отправки таблицы нескольким получателям необходимо указать список адресов электронной почты в параметре recipient функции GmailApp.sendEmail(). Адреса можно разделить запятыми или использовать массив адресов.