Что такое Google Apps Script и зачем он нужен для Gmail?
Google Apps Script – это облачная платформа разработки, позволяющая автоматизировать задачи и расширять функциональность приложений Google Workspace, включая Gmail. В контексте Gmail, Apps Script позволяет автоматизировать рутинные операции, обрабатывать письма, интегрировать Gmail с другими сервисами и создавать собственные решения для работы с электронной почтой. Это, по сути, JavaScript-подобный язык, работающий на серверах Google, что избавляет от необходимости установки и настройки локального окружения.
Преимущества автоматизации Gmail с помощью Apps Script
Экономия времени: Автоматизация рутинных задач, таких как фильтрация, сортировка, ответы на письма.
Повышение эффективности: Интеграция Gmail с другими сервисами (Google Drive, Sheets, Calendar и т.д.) для создания комплексных рабочих процессов.
Персонализация: Создание собственных правил обработки писем, не предусмотренных стандартными настройками Gmail.
Масштабируемость: Автоматизация обработки больших объемов корреспонденции.
Централизованное управление: Все скрипты хранятся в облаке и доступны из любого места.
Настройка среды разработки: редактор Apps Script
Для начала работы с Apps Script, откройте редактор скриптов: script.google.com. Для привязки к Gmail, создайте новый проект, или откройте существующий, и используйте GmailApp сервис в ваших скриптах. Убедитесь, что вы предоставили необходимые разрешения для доступа к вашему почтовому ящику, когда скрипт запросит их при первом запуске.
Основные операции с Gmail в Apps Script
Получение доступа к почтовому ящику пользователя
Основной объект для работы с Gmail в Apps Script – это GmailApp. Для получения доступа к почтовому ящику используется метод GmailApp.getDefaultAccount() (для текущего пользователя) или GmailApp.getUserLabelByName('labelName') для доступа к определенным ярлыкам.
Чтение писем: поиск, фильтрация и обработка
Для чтения писем используются методы GmailApp.search(), GmailApp.getInboxThreads() и GmailApp.getMessagesForThread(). GmailApp.search() позволяет искать письма по различным критериям (тема, отправитель, дата и т.д.). getInboxThreads() возвращает все ветки писем во входящих. getMessagesForThread() возвращает массив писем в ветке. Пример:
/**
* @param {string} searchTerm - Строка поиска.
* @return {GmailThread[]} - Массив веток писем, соответствующих поисковому запросу.
*/
function searchGmail(searchTerm: string): GmailThread[] {
const threads: GmailThread[] = GmailApp.search(searchTerm);
return threads;
}
const unreadThreads: GmailThread[] = searchGmail('is:unread');
for (const thread of unreadThreads) {
const messages: GmailMessage[] = thread.getMessages();
for (const message of messages) {
Logger.log(message.getSubject());
Logger.log(message.getPlainBody());
}
}Отправка писем: создание, отправка простых и HTML-писем
Для отправки писем используется метод GmailApp.sendEmail(). Можно отправлять простые текстовые письма или HTML-письма с форматированием.
/**
* @param {string} recipient - Адрес получателя.
* @param {string} subject - Тема письма.
* @param {string} body - Тело письма.
*/
function sendSimpleEmail(recipient: string, subject: string, body: string): void {
GmailApp.sendEmail(recipient, subject, body);
}
/**
* @param {string} recipient - Адрес получателя.
* @param {string} subject - Тема письма.
* @param {string} htmlBody - HTML тело письма.
*/
function sendHtmlEmail(recipient: string, subject: string, htmlBody: string): void {
GmailApp.sendEmail(recipient, subject, '', { htmlBody: htmlBody });
}Работа с вложениями: получение и отправка файлов
Для работы с вложениями используются методы GmailMessage.getAttachments() (получение вложений) и GmailApp.sendEmail() с параметром attachments (отправка вложений).
/**
* @param {GmailMessage} message - Объект сообщения Gmail.
* @return {GoogleAppsScript.Base.Blob[]} - Массив вложений.
*/
function getAttachments(message: GmailMessage): GoogleAppsScript.Base.Blob[] {
return message.getAttachments();
}
const firstThread: GmailThread = GmailApp.getInboxThreads(0, 1)[0];
const firstMessage: GmailMessage = firstThread.getMessages()[0];
const attachments: GoogleAppsScript.Base.Blob[] = getAttachments(firstMessage);
for (const attachment of attachments) {
Logger.log(attachment.getName());
}Автоматизация рутинных задач в Gmail
Автоматическая обработка входящих писем: фильтрация, маркировка, архивирование
Можно создать скрипт, который автоматически фильтрует входящие письма по определенным критериям (например, по отправителю или теме), помечает их ярлыками и архивирует.
Создание автоматических ответов: отпуск, подтверждение получения
Скрипт может автоматически отвечать на входящие письма, например, в период отпуска или для подтверждения получения письма.
Автоматическая отправка писем по расписанию
Используя триггеры, можно настроить автоматическую отправку писем по расписанию, например, для рассылки новостей или напоминаний.
Примеры скриптов для Gmail
Скрипт для автоматической загрузки вложений в Google Drive
/**
* Автоматически сохраняет вложения из Gmail в указанную папку Google Drive.
*/
function saveAttachmentsToDrive(): void {
const threads: GmailThread[] = GmailApp.search('has:attachment');
const folderId: string = 'YOUR_FOLDER_ID'; // Замените на ID вашей папки в Google Drive
const folder: GoogleAppsScript.Drive.Folder = DriveApp.getFolderById(folderId);
for (const thread of threads) {
const messages: GmailMessage[] = thread.getMessages();
for (const message of messages) {
const attachments: GoogleAppsScript.Base.Blob[] = message.getAttachments();
for (const attachment of attachments) {
folder.createFile(attachment);
}
}
}
}Скрипт для создания списка контактов из подписей писем
Скрипт может анализировать подписи писем и извлекать из них имена и адреса электронной почты для создания списка контактов в Google Sheets.
Скрипт для автоматической отправки напоминаний о просроченных задачах (на основе писем)
Можно создать скрипт, который анализирует письма с задачами, извлекает из них сроки выполнения и отправляет напоминания о просроченных задачах.
Расширенные возможности и ограничения
Использование триггеров для автоматического запуска скриптов
Триггеры – это механизмы, позволяющие автоматически запускать скрипты в ответ на определенные события (например, получение нового письма) или по расписанию. Есть устанавливаемые триггеры (требуют авторизации пользователя) и простые триггеры (например, onOpen в Google Sheets).
Работа с API Gmail для более сложных задач
Для более сложных задач можно использовать напрямую Gmail API, предоставляющий больше возможностей, чем GmailApp. Для этого потребуется более глубокое понимание OAuth 2.0 авторизации и работы с REST API.
Ограничения Google Apps Script и способы их обхода
Google Apps Script имеет ограничения на время выполнения скриптов, количество отправляемых писем и т.д. Для обхода этих ограничений можно использовать пакетную обработку данных, оптимизацию кода и делегирование задач другим сервисам.
Советы по оптимизации и отладке скриптов
Используйте Logger.log() для отладки скриптов.
Оптимизируйте код, избегая ненужных операций и запросов к Gmail API.
Используйте пакетную обработку данных для уменьшения количества запросов.
Внимательно следите за использованием ресурсов, чтобы не превысить лимиты Google Apps Script.
Используйте data typing и JSDoc-style комментарии для улучшения читаемости и поддержки кода.