Автоматическая отправка счетов из Google Sheets

В этой статье вы научитесь автоматизировать отправку ежемесячных счетов, даже если никогда не программировали. Покажем два варианта: простой Google Apps Script и запись макроса. Оба варианта могут формировать PDF‑прицеп и отправлять его по электронной почте.
Зачем это нужно
Автоматизация экономит время и снижает риск забыть отправить счёт. Это особенно полезно для фрилансеров, небольших предприятий и тех, кто выставляет однотипные счета регулярно.
Ключевая идея: один шаблонный лист с именем, заранее фиксированным (например, “Invoice”), копируется и отправляется как PDF по расписанию (1‑е число месяца). После отправки вы переименовываете лист в архивный месяц и создаёте новый пустой шаблон «Invoice» для текущего месяца.
Important: Скрипт/макрос получает доступ к вашим данным Google (Sheets и Gmail) и запросит авторизацию при первом запуске.
Что подготовить перед стартом
- Убедитесь, что таблица для текущего месяца всегда имеет одно и то же имя, например: Invoice.
- В шаблоне счёта убедитесь, что вид печати и формат страниц настроены так, как вы хотите видеть в PDF.
- Подготовьте список получателей — один e‑mail или несколько адресов через запятую.
- Сделайте тестовую копию файла для пробного запуска.

Шаг 1. Создание простого Google Script
- В Google Sheets откройте меню Tools → Script editor.
- Переименуйте проект скрипта в что‑то понятное (например, “Invoice Sender”).
- Вставьте следующий код в редактор (пример готового, очень простого скрипта):
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var filename = "Current Month " + ss.getName();
var SendBook = ss.copy(filename);
var ToUser = "xxxxx@gmail.com"
MailApp.sendEmail({
to: ToUser,
subject: 'Here is my invoice for last month!',
body: 'Hi! I have attached my invoice for this month. Thanks for the work, really appreciate it! -Ryan',
attachments: [SendBook.getBlob().setName(filename)]
});
}Пояснения к коду: коротко — скрипт создаёт копию текущей книги, даёт ей имя, формирует BLOB и отправляет письмо с вложением. Измените переменную ToUser на свой адрес(а) и отредактируйте subject/body по вкусу.
Важно: чтобы проверить скрипт, подставьте ваш e‑mail в ToUser и запустите вручную (кнопка Play). Система попросит авторизацию доступа к вашему аккаунту.

Если всё прошло успешно, вы получите письмо с PDF‑вложением, которое можно открыть без Google Sheets.

Шаг 2. Автоматизация — настройка триггера
- В редакторе скриптов выберите Edit → Current project’s triggers.
- Нажмите на ссылку, если триггеры ещё не настроены.
- Создайте новый триггер: выберите функцию (myFunction), Event source — Time‑driven, Type of time based trigger — Month timer, Day of month — 1 (первое число).
После сохранения Google будет запускать скрипт автоматически в выбранный день. Убедитесь, что файл «Invoice» готов к отправке к этому дню.

Note: Временные триггеры запускаются по зоне, указанной в настройках вашей таблицы/аккаунта. Проверьте часовой пояс в Settings для правильного времени отправки.
Шаг 3. Запись макроса вместо скрипта (альтернатива без кода)
Если вы предпочитаете не редактировать код, можно записать макрос, который отправляет текущий лист как PDF.
- В Invoice Sheet: Tools → Macros → Record Macro.
- Выполните через меню File → Email as attachment и заполните поля (адреса, тема, текст).
- Нажмите Send во время записи, затем Save и дайте макросу понятное имя.

Макрос запишет вашу последовательность действий (включая адресата и текст письма). Протестируйте макрос один раз вручную.

Шаг 4. Автоматизация макроса
Макросы в Google Sheets записываются как функции в файле макросов (macros.gs). Их можно вызывать через триггеры так же, как и обычные скрипты.
- Откройте Tools → Script editor и найдите файл macros.gs.
- Запомните имя функции макроса (например, myFunction1).

- Edit → Current project’s triggers → создайте новый триггер, выберите вашу функцию и поставьте Time‑driven → Month timer → Day 1.

Теперь макрос будет запускаться автоматически и отправлять PDF тем адресатам, которых вы указали при записи.

Практические советы и хиты по устойчивой автоматизации
- Название шаблона: используйте жёсткое фиксированное имя (Invoice), чтобы скрипт всегда находил нужный лист. После отправки переименовывайте в формат YYYY‑MM или “May 2026” для архива.
- Шаблон печати: проверьте поля печати, размеры страницы и отступы — PDF будет генерироваться именно из текущего вида листа.
- Множественные адресаты: перечисляйте через запятую в переменной ToUser.
- Доступ и безопасность: используйте отдельный сервисный аккаунт только для рассылки, если автоматизация внутри организации.
Чек‑лист перед включением автоматизации
- Шаблон “Invoice” готов и форматирован для печати.
- Текст письма и тема проверены.
- В переменной ToUser указан рабочий e‑mail (или список адресов).
- Тестовый прогон прошёл успешно (скрипт отправил письмо).
- Настроен триггер на 1‑е число месяца и проверен часовой пояс.
SOP: Пошаговый план на ежемесячную рассылку
- В течение месяца ведите данные в листе Invoice.
- В последний день месяца убедитесь, что все позиции окончены.
- 1‑го числа скрипт/макрос автоматически сработает. Если вы хотите вручную отправить — запустите функцию через редактор или используйте меню Add‑ons → Macros.
- Переименуйте отправленный лист в архивный формат (например, 2026‑04) и создайте новый шаблон Invoice на текущий месяц.
- Проверьте почтовые логи (входящие у получателей) и откорректируйте при необходимости.
Критерии приёмки
- Письмо доставлено на указанный(ые) адрес(а).
- Во вложении — корректный PDF с содержимым счёта и ожидаемым форматированием.
- Время отправки соответствует дню и часовому поясу.
Тестовые сценарии и критерии приёмки
- Тест 1: Запуск скрипта вручную с вашим адресом — ожидаемый результат: письмо приходит в течение 1–2 минут.
- Тест 2: Настройка триггера на ближайшую минуту (для отладки) — результат: автоматический запуск и получение письма.
- Тест 3: Макрос с несколькими адресатами — результат: все адресаты получают письмо.
- Тест 4: Проверка PDF — все поля и таблицы видны, нет обрезанных колонок.
Критерии приёмки: 4/4 — все тесты прошли без ошибок.
Отказоустойчивость и частые проблемы
- Ошибка авторизации: удалите и повторно дайте разрешения скрипту. Проверьте аккаунт, под которым вы запускаете скрипт.
- Письмо не отправляется: проверьте переменную ToUser, не стоит ли в ней опечатка; проверьте, не заблокирован ли исходящий трафик почты (для корпоративных доменов).
- PDF выглядит неправильно: откройте Print preview в Google Sheets и скорректируйте настройки страницы.
- Макрос перестал работать после изменения интерфейса Google Sheets: перезапишите макрос или используйте Apps Script — он стабильнее при изменениях интерфейса.
Альтернативные подходы
- Сервисы интеграции (Make, Zapier): могут цеплять Google Sheets и отправлять PDF по расписанию, но обычно платные.
- Формирование PDF сервером: если у вас бэкенд, можно генерировать PDF из шаблонов (например, HTML → PDF) и отправлять через SMTP.
- Google Workspace Add‑ons: для корпоративных пользователей есть плагины для выставления и отправки счётов.
Роли и ответственность (кто что делает)
- Фрилансер/владелец бизнеса: обеспечивает актуальность данных в шаблоне и проверяет отправку первый месяц.
- Администратор IT: настраивает права доступа и, при необходимости, сервисный аккаунт.
- Бухгалтер: проверяет формат счёта и соответствие налоговым требованиям.
Маленькая методология именования и архивации
Хорошая практика:
- Текущий шаблон: Invoice
- После отправки: Invoice‑YYYY‑MM (например, Invoice‑2026‑04)
- Архивация: сохранить в отдельной папке «Invoices/2026» для удобства поиска.
Ментальные модели — когда использовать скрипт, а когда макрос
- Скрипт: если нужна гибкость, дополнительные манипуляции с данными, логирование или интеграция с другими API.
- Макрос: если задача простая и повторяется, и вы не хотите писать код.
Шаблон письма (пример)
Тема: Счёт за услуги — [название месяца]
Тело письма:
Здравствуйте,
Прикрепляю счёт за [месяц]. Спасибо за сотрудничество.
С уважением, [Ваше имя]
Быстрый список проверки перед отправкой (подготовка к первому запуску)
- Проверьте имя листа Invoice.
- Настройте тему и текст письма.
- Подставьте тестовый e‑mail и выполните ручной запуск.
- Настройте триггер и убедитесь в часовом поясе.
Короткая памятка по безопасности
- Не делитесь скриптом с посторонними без проверки кода.
- Для корпоративных автоматизаций используйте сервисные аккаунты и ограничьте права.
- Регулярно просматривайте журналы (execution logs) скриптов на предмет ошибок.
Краткое резюме
Автоматизация отправки счетов из Google Sheets — простая и мощная вещь: вы можете выбрать скрипт или макрос, настроить месячный триггер и забыть о рутинной задаче. Тестируйте перед включением, следуйте чек‑листам и держите шаблон актуальным.
Summary:
- Подготовьте шаблон Invoice.
- Выберите: скрипт (больше возможностей) или макрос (просто записать действия).
- Настройте Time‑driven триггер на 1‑е число месяца.
- Проведите тесты и запустите в прод.
Счастливой автоматизации — и меньше забытых счетов!
Похожие материалы
Убрать раздражающие функции Facebook — руководство
Приложения по умолчанию на Android — настройка и управление
Установить REMnux в VirtualBox — руководство
Список выполненного: мотивация и шаблоны
Как сохранить веб‑страницу для офлайн‑чтения