Что такое Google Apps Script и зачем он нужен для отправки писем?
Google Apps Script (GAS) – это облачная платформа для автоматизации задач и расширения функциональности Google Workspace (Google Sheets, Docs, Gmail, Drive и др.). В контексте отправки писем, GAS позволяет автоматизировать рассылку уведомлений, отчетов, персонализированных предложений и других важных документов, используя вложения. Вместо ручной отправки каждого письма, можно настроить скрипт для выполнения этой задачи автоматически, экономя время и снижая вероятность ошибок.
Необходимые разрешения и настройка Google Apps Script проекта
Перед тем, как начать отправлять электронные письма с вложениями, необходимо убедиться, что у скрипта есть соответствующие разрешения. При первом запуске скрипта, использующего MailApp или GmailApp, Google запросит разрешение на отправку писем от вашего имени. Также важно проверить, что проект GAS связан с учетной записью Google, имеющей доступ к файлам, которые будут использоваться в качестве вложений. Для этого необходимо создать новый проект в Apps Script (script.google.com) или привязать скрипт к существующему Google Sheets/Docs документу.
Обзор основных методов класса MailApp для отправки писем
Основной класс для отправки электронных писем в GAS – MailApp. Он предоставляет несколько методов для отправки писем, включая:
MailApp.sendEmail(recipient, subject, body): Отправляет простое текстовое письмо.MailApp.sendEmail(message): Отправляет письмо, используя объектmessage, который позволяет задать дополнительные параметры, такие как HTML-тело, вложения и другие заголовки.GmailApp.sendEmail(recipient, subject, body, options): Предоставляет более широкий спектр опций для отправки писем через Gmail, включая возможность установки пользовательских заголовков и параметров Gmail.
Создание и отправка простого электронного письма с вложением
Получение доступа к файлу, который нужно прикрепить (Google Drive, URL)
Вложения могут быть получены из Google Drive или загружены по URL. Чтобы получить файл из Google Drive, используйте DriveApp.getFileById(fileId). Чтобы загрузить файл по URL, можно использовать UrlFetchApp.fetch(url).getBlob().
Создание объекта вложения (Blob) из файла
Объект вложения (Blob) представляет собой данные файла. Для создания Blob из файла Google Drive используется метод file.getBlob(), где file – это объект File из DriveApp. Для файла, загруженного по URL, getBlob() уже возвращает необходимый объект.
Формирование параметров отправки письма: получатель, тема, текст, вложения
Параметры письма формируются в виде объекта JavaScript. Обязательные параметры – to (получатель), subject (тема) и body (текст письма). Вложения добавляются в параметр attachments, который представляет собой массив объектов Blob.
Отправка письма с использованием MailApp.sendEmail()
Для отправки письма с вложениями используется метод MailApp.sendEmail(message). Аргумент message – это объект, содержащий все параметры письма, включая вложения.
Пример:
/**
* Отправляет электронное письмо с вложением из Google Drive.
*
* @param {string} recipient - Адрес электронной почты получателя.
* @param {string} subject - Тема электронного письма.
* @param {string} body - Текст электронного письма.
* @param {string} fileId - ID файла в Google Drive для прикрепления.
* @return {void}
*/
function sendEmailWithAttachment(recipient: string, subject: string, body: string, fileId: string): void {
try {
// Получаем файл из Google Drive.
const file: GoogleAppsScript.Drive.File = DriveApp.getFileById(fileId);
// Создаем Blob из файла.
const attachment: GoogleAppsScript.Base.Blob = file.getBlob();
// Формируем параметры отправки письма.
const message: object = {
to: recipient,
subject: subject,
body: body,
attachments: [attachment]
};
// Отправляем письмо.
MailApp.sendEmail(message);
Logger.log('Письмо успешно отправлено.');
} catch (error) {
Logger.log('Ошибка при отправке письма: ' + error);
}
}
// Пример использования:
sendEmailWithAttachment('recipient@example.com', 'Тема письма', 'Текст письма', 'your_file_id');
Расширенные возможности отправки писем с вложениями
Отправка HTML-писем с вложениями
Для отправки HTML-писем необходимо использовать параметр htmlBody вместо body. Вложения добавляются так же, как и в текстовых письмах.
Использование inline-вложений (встраивание изображений в тело письма)
Inline-вложения позволяют встраивать изображения непосредственно в тело письма. Для этого необходимо добавить параметр inlineImages в объект message. Ключи объекта inlineImages используются для ссылок на изображения в HTML-коде письма (например, <img src="cid:myImage">).
Отправка нескольких вложений в одном письме
Для отправки нескольких вложений, создайте массив Blob объектов и передайте его в параметр attachments.
Обработка ошибок при отправке и логирование
Всегда оборачивайте код отправки писем в блок try...catch для обработки возможных ошибок. Используйте Logger.log() для логирования информации об отправке и ошибок для последующей диагностики.
Примеры скриптов для различных сценариев отправки писем
Скрипт для отправки письма с вложением при срабатывании триггера (например, при изменении Google Sheets)
Этот скрипт можно настроить для автоматической отправки письма с вложением каждый раз, когда изменяется таблица Google Sheets. Для этого необходимо создать триггер onEdit в редакторе Apps Script.
Скрипт для автоматической отправки отчетов с вложениями по расписанию
Этот скрипт можно настроить для автоматической отправки отчетов (например, PDF-файлов) по расписанию. Используйте триггер time-driven для запуска скрипта каждый день, неделю или месяц.
Скрипт для отправки индивидуальных писем с персонализированными вложениями (email merge)
Этот скрипт позволяет отправлять индивидуальные письма каждому получателю из списка, используя данные из Google Sheets. Вложения также могут быть персонализированы для каждого получателя.
Оптимизация и устранение неполадок при работе с вложениями
Ограничения на размер вложений и количество писем в день
Google Apps Script имеет ограничения на размер вложений (обычно до 25 МБ) и количество писем, которые можно отправить в день. Эти ограничения зависят от типа учетной записи Google (бесплатная или Google Workspace). Подробную информацию о лимитах можно найти в документации Google Apps Script.
Рекомендации по оптимизации размера файлов для вложений
Для уменьшения размера вложений рекомендуется использовать сжатие (например, ZIP) или оптимизировать изображения.
Диагностика и решение проблем с отправкой писем (ошибки, спам)
Если письма не отправляются, проверьте:
- Правильность адреса электронной почты получателя.
- Доступ к файлу в Google Drive (права доступа).
- Размер вложения.
- Лимиты отправки писем.
- Не попадают ли письма в спам (проверьте настройки почтового сервера).