РазработкаЗащита оплатыПодробнее
- Доработки в рамках пакета бесплатны.
- Если вы не ответите в течение 3 дней после сдачи, работа будет принята автоматически.
При оплате деньги резервируются и переходят сервису, только когда вы примете работу.

Пример результата
Сводный отчёт в Excel из ежемесячных продаж 9 магазинов
Как его запускают
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO Папка: sales/2026-10, найдено файлов: 9
2026-11-02 09:14:03 INFO shop-01.csv: 1284 строки
2026-11-02 09:14:04 INFO shop-02.xlsx: 967 строк
2026-11-02 09:14:04 WARN shop-07.csv: пропущены 3 строки без цены (строки 88, 412, 913)
2026-11-02 09:14:05 INFO Готово: 10 412 строк -> report-2026-10.xlsx (листы «Продажи» и «Итоги»)
Настройки, а не код
Названия столбцов каждого магазина лежат в settings.ini. Новый магазин или переименованный столбец — это одна строка там:
[columns]
date = Дата, Дата продажи, День
product = Товар, Наименование, Название
quantity = Кол-во, Количество, Шт
price = Цена, Цена за шт
Фрагмент кода
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""Читает файл одного магазина и даёт столбцам названия из отчёта."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: нет столбца «{name}» (искали: {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
Файлы: ZIP-архив с merge_sales.py (310 строк), settings.ini, requirements.txt и README: как установить Python, как запустить скрипт и что значит каждое сообщение в журнале. Клиент запускает скрипт на своём компьютере.
Клиент: небольшая сеть из 9 магазинов канцтоваров. Каждый магазин присылает продажи за месяц в CSV или Excel, и названия столбцов у всех немного разные. Задача: скрипт, который читает все файлы из папки, приводит столбцы к одному виду и сохраняет один отчёт в Excel: все продажи и отдельный лист с итогами по магазинам.
Клиент и все данные вымышлены.
Об услуге
Когда одно и то же письмо нужно отправить 80 клиентам, ученикам или партнёрам с их именем, датой или суммой, копирование занимает часы. Этот скрипт Google Apps Script живёт в вашей Google Таблице и отправляет каждой строке личное письмо из вашего собственного Gmail: подставляет в шаблон {{Имя}}, {{Дата}} и любые другие столбцы, пишет в строку «Отправлено» и время и пропускает уже отправленные строки, так что его можно запускать повторно без опаски. Он для вашего собственного списка людей, которые ждут ваших писем, а не для купленных баз и холодных массовых рассылок. Google ограничивает число писем, которые скрипт отправляет за день, и для бесплатного Gmail лимит ниже, чем для Google Workspace; скрипт останавливается на лимите и продолжает позже. Ставите и запускаете его вы в своём аккаунте.
Что входит
- Что вы получитеАрхив ZIP с кодом Apps Script и README, где показано, как вставить его в таблицу, дать доступ и отправить; код также виден на странице заказа.
- Личные поляЛюбой столбец таблицы в теме и тексте письма
- Из вашего GmailОтветы приходят вам, как на любое ваше письмо
- Отметки об отправкеВ каждой строке видно, когда письмо ушло, дважды ничего не уходит
- В пределах лимитов GoogleОстанавливается на дневном лимите и продолжает позже
- Понятный кодС комментариями, шаблон легко поменять потом
Порядок работы
- 1ЗадачаВы присылаете столбцы таблицы и письмо, которое нужно разослать
- 2КодМы пишем скрипт и инструкцию по установке
- 3ПроверкаВы вставляете его в копию таблицы и сначала отправляете на свой адрес
- 4ПравкиВы просите правки в рамках пакета и присылаете текст ошибки, если она есть
Что нужно от вас
Названия столбцов вашей таблицы и две-три строки с выдуманными именами и адресами, тема и текст письма с местами, куда идут столбцы, и простой ли это текст или с оформлением из черновика Gmail. Кто люди в списке и как они в него попали (ваши клиенты, участники, ученики), примерно сколько строк и пользуетесь ли вы бесплатным Gmail или Google Workspace. Вложения, если они есть, и где они лежат на Диске.
В брифе мы спросим:
- Кому вы пишете?
- Какие столбцы в таблице?
- Что должно быть в письме?
- Бесплатный Gmail или Google Workspace?
Сравнение пакетов
| Пакеты | ЭкономПростая рассылка16 $ | СтандартРассылка с настройками33 $ | БизнесПрограмма для рассылки67 $ |
|---|---|---|---|
| Срок | 1 день | 2 дня | 3 дня |
| Доработки | 1 | 2 | 3 |
| Код | до 150 строк | до 400 строк | до 1000 строк |
| Файлов кода | 1 | до 3 | до 8 |
| Файл настроек | Нет | Да | Да |
| Понятные ошибки и журнал работы | Нет | Да | Да |
| Параметры запуска и инструкция для запуска по расписанию | Нет | Нет | Да |
| Инструкция по установке и запуску (README) | Да | Да | Да |
| Язык | Google Apps Script | Google Apps Script | Google Apps Script |
| Заказать Эконом | Заказать Стандарт | Заказать Бизнес |
Защита оплаты
Вы оплачиваете заказ сразу, но деньги переходят сервису только за принятую работу.
- Фиксированная ценаЦена пакета не меняется после оплаты.
- Деньги резервируютсяПри оплате сумма только резервируется. Сервису она переходит, когда вы примете работу.
- Проверка перед сдачейКаждый результат проходит проверку качества, прежде чем попасть к вам, и вы видите его на странице заказа до приёмки.
- Бесплатные доработкиПросите изменения в рамках брифа столько раз, сколько предусмотрено пакетом.
- Приёмка через 3 дняЕсли в течение 3 дней после сдачи вы не примете работу и не попросите изменений, она будет принята автоматически. Если после сдачи вы напишете в чат заказа, заказ подождёт; ответив, мы можем начать отсчёт 3 дней заново и сообщим об этом в чате.
- Переделка или полный возвратЕсли результат не соответствует брифу и доработки не помогли или срок превышен больше чем вдвое, напишите в чат заказа: мы переделаем работу или полностью вернём деньги.
Вопросы и ответы
Сколько писем он отправит за день?
Столько, сколько Google разрешает вашему аккаунту отправлять из скрипта, и для бесплатного Gmail это меньше, чем для Google Workspace; текущие цифры Google указывает на странице квот Apps Script. Скрипт останавливается на лимите, а следующий запуск продолжает с первой неотправленной строки.
Можно отправить по купленной базе?
Нет. Скрипт для людей, которые вас знают и ждут ваших писем, например ваших клиентов или участников. Купленные базы и холодные массовые рассылки нарушают правила Google, и аккаунт могут заблокировать.
Он добавит ссылку для отписки?
Он может добавить строку с просьбой ответить, если человек не хочет таких писем, и пропускать строки, которые вы отметили как отписавшиеся. Для рассылок с отпиской в один щелчок лучше подходит сервис рассылок.
Вы получите доступ к моему Gmail?
Нет. Код вы вставляете в свою таблицу, и разрешение на отправку писем Google спрашивает у вас, а не у нас. В ваш аккаунт мы не заходим.
Не нашли ответ?


