Делюсь этим с удовольствием. Ниже пошаговая инструкция: семь шагов, к каждому готовое обращение к помощнику. Копируй их, описывай свою работу обычными словами и собирай похожую вещь для магазина, автосервиса, клиники, салона или бригады. Я покажу не только результат, но и места, где счёт может уйти дважды или не уйти совсем.
А началось всё с обычной строки заказа.
Заказы приходят в течение дня. В одном нужны товары из нескольких групп, в другом действует особое условие для постоянного покупателя, почти всегда надо добавить доставку. Я проверяю наличие и цену, согласую итог, потом стараюсь быстро отправить счёт, пока клиент не ушёл к другому поставщику.
Раньше я переносил позиции из заказа в счёт руками. Сначала сверял количество, потом вспоминал порог оптовой цены, после этого отдельно проверял доставку. В конце ещё раз сравнивал итог с таблицей. Работа вроде простая, но в ней слишком много мест для одной незаметной ошибки.
Главное правило у меня одно: оптовая цена действует только после достижения порога, причём в смешанном заказе порог считается отдельно по каждой товарной группе. Если в одной группе нужное количество есть, а в другой нет, нельзя применить скидку ко всему заказу.
Теперь я собрал таблицу заказов с прайсом. Она видит количество по каждой группе, выбирает нужную цену, добавляет доставку отдельной строкой и из этой же строки готовит счёт. Я не стал программистом и не держу в голове устройство файлов. Мне достаточно проверить заказ и итог перед отправкой.
Хочешь собрать такую же таблицу для своего дела? На практикуме эту задачу проходят руками за два вечера:
Практикум «Старт»
Три дня живой практики: от идеи до работающего проекта по ссылке
2 000 ₽старт 5 августа, 18:00 МСК
Что изменилось, когда счёт стал собираться из строки заказа?
В строке заказа у меня лежат клиент, дата, товарная группа, количество, цена, сумма и доставка. Рядом есть поля для ссылки на готовый файл, статуса и времени обработки. Это не отчёт ради отчёта. По строке видно, что произошло с заказом.
Если клиент прислал смешанный заказ, таблица не складывает все позиции в один общий порог. Она сначала смотрит каждую товарную группу отдельно. Это важнее самой формулы: именно здесь раньше приходилось останавливаться и проверять всё глазами.
Счёт получается из данных той же строки. В документ попадают позиции, количество, рассчитанная цена, сумма и доставка отдельной строкой. После создания PDF в таблице остаётся ссылка. Я открываю её, смотрю документ и только потом отправляю.
Числа «до и после» я не называю. Для каждого магазина они будут своими. Если хочешь понять эффект у себя, несколько дней отмечай, сколько времени уходит на перенос заказа и проверку счёта, а после запуска повтори замер.
У меня изменилось не только количество ручных действий. Исчезло ощущение, что перед каждым письмом надо заново вспоминать прайс. Я всё равно проверяю результат, но проверяю уже готовый счёт, а не пересчитываю его с нуля.
Почему готовый сервис не помнит правило оптовой цены?
Готовый сервис удобен на старте. Там уже есть карточки клиентов, документы, отправка и другие функции. Но оптовый магазин живёт не только по общему сценарию. У одного постоянного покупателя свои условия, у одной товарной группы отдельный порог, у другой доставка считается иначе.
Когда правило меняется в собственной таблице, я описываю его помощнику словами и проверяю несколько тестовых строк. Не нужно объяснять разработчику весь бизнес и ждать, попадёт ли изменение в ближайшее обновление.
Это не значит, что своя схема всегда лучше. Готовый сервис снимает часть забот о поддержке и обновлениях. Своя таблица требует проверок, понятных статусов и контроля доступа. Я выбирал между ожиданием чужого решения и самостоятельной настройкой под свою рутину.
Порог нельзя задавать одной скидкой на весь заказ. Правило должно звучать прямо: количество считается отдельно по каждой товарной группе. Иначе таблица может показать красивый итог, который не соответствует прайсу.
Содержание и объем обрабатываемых персональных данных должны соответствовать заявленным целям обработки».
Для тестов я бы не загружал реальные данные клиента. Сначала достаточно вымышленного названия, условного ИНН и тестового Telegram chat ID. Результат проверяется так же, а лишние риски не появляются.
Из чего состоит счёт из строки заказа?
Сначала появляется строка заказа. В ней должны быть поля, которые реально нужны процессу:
order_id | date | client | inn | product_group | item | quantity | price | delivery | total | chat_id | status | document_url | processed_atЕсли в одном заказе несколько позиций, их можно хранить отдельными строками с общим order_id. Главное, чтобы расчёт видел товарную группу и количество внутри неё. Тогда порог оптовой цены не смешивается с соседней группой.
Дальше скрипт читает строку как набор значений. В Apps Script для этого используется getValues(): диапазон возвращается как двумерный массив, где первая ячейка имеет индекс [0][0]. Для тебя это выглядит проще: каждая колонка таблицы становится полем заказа.
Шаблон счёта лучше подготовить заранее в Google Docs. В нём остаются маркеры:
СЧЁТ № {{ORDER_ID}}
Дата: {{INVOICE_DATE}}
Клиент: {{CLIENT}}
ИНН: {{INN}}
Товарная группа: {{PRODUCT_GROUP}}
Позиция: {{ITEM}}
Количество: {{QUANTITY}}
Цена: {{PRICE}}
Сумма: {{TOTAL}}
Доставка: {{DELIVERY}}
Итого: {{GRAND_TOTAL}}После копирования документа скрипт заменяет маркеры значениями из строки через replaceText(). Затем документ можно получить в PDF через getAs('application/pdf') и сохранить в Google Drive.
Последний участок цепочки - отправка. Apps Script может сделать HTTP-запрос в Telegram Bot API. Для PDF используется метод sendDocument, а обязательным полем остаётся идентификатор чата. По документации Telegram, боты могут отправлять файлы размером до 50 МБ.
В таблицу я возвращаю не одно расплывчатое «готово», а несколько признаков: документ создан, ссылка записана, сообщение отправлено, время обработки. Так проще понять, где остановился процесс.
Пройти всю сборку от строки заказа до PDF с проверкой каждого этапа можно на практикуме:
Практикум «Старт»
Три дня живой практики: от идеи до работающего проекта по ссылке
2 000 ₽старт 5 августа, 18:00 МСК
Что поставить и сколько это стоит?
Visual Studio Code выглядит как редактор для программиста, но я сам код в нём не пишу. Он нужен как папка проекта и место, где помощник видит файлы. Слева лежит список документов, справа открывается содержимое.
Claude Code встраивается в редактор и принимает задачи обычными словами. Ты описываешь, что происходит в магазине, какие поля есть в таблице и какой счёт должен получиться. Помощник как ИИ-агент создаёт или меняет файлы, а потом объясняет результат.
Я поставил обе вещи один раз. Сегодня собираю счёт, через неделю могу попросить автоматизацию для соседней задачи. Инструменты остаются теми же, меняется только описание работы.
Подписка Claude Pro стоит $20 в месяц по официальной странице Anthropic. Пересчёт составит около 1 574 ₽ по курсу ЦБ РФ на день оплаты, без комиссии оплаты из России. Если оплачивать через посредника, фактическая сумма может быть выше. Claude Code входит в подписку отдельно покупать его не нужно.
Официальный пример Google по созданию PDF из таблицы указывает 15 минут настройки именно своего примера. Это не срок для всей схемы с товарными группами, доставкой, Telegram и обработкой ошибок.
Около 15 минут относятся к установке инструментов и к длительности настройки официального простого примера Google. Срок полной сборки счёта зависит от структуры таблицы, шаблона и числа проверок.
На бесплатную среду Google Apps Script тоже есть ограничения. Для личного аккаунта Google в документации указаны 250 созданных документов в день и 6 минут на один запуск. Квоты могут меняться, поэтому перед рабочим запуском проверь актуальные значения.
Как выставить счет из таблицы шаг за шагом?

Опиши задачу словами.
Создай папку проекта, открой её в Visual Studio Code и начни не с кода, а с описания своей рутины. Помощник должен сначала задать вопросы и сохранить план.
Разобрать задачу до начала сборкиУ меня оптовый магазин. Заказы приходят в течение дня и могут содержать товары из нескольких товарных групп. Для каждой группы действует свой порог оптовой цены. В заказе также бывает доставка. Сейчас я сверяю наличие и цену, копирую позиции в счёт и отдельно проверяю итог с таблицей. Хочу собрать процесс Google Sheets -> Google Docs -> PDF. Строка заказа должна стать заполненным счётом, PDF должен сохраниться в Google Drive, а в таблице должны появиться ссылка и статусы обработки. Пока не пиши код. Разбери задачу простыми словами, перечисли необходимые поля, предложи порядок сборки и задай вопросы, если данных не хватает. План сохрани в файл plan.md.
В ответ помощник выдаст список полей и порядок работ. Проверь, что он не объединил все товары в один общий порог и не придумал лишние функции.
Задай поля строки заказа.
Сначала сделай минимальную таблицу. Лишние колонки потом усложняют проверку и увеличивают объём данных.
Создать структуру таблицы заказовПодготовь структуру Google Sheets для заказов оптового магазина. Нужны поля: order_id, date, client, inn, product_group, item, quantity, price, delivery, total, chat_id, status, document_url, processed_at. Товарные позиции должны храниться отдельными строками. Если один заказ содержит несколько позиций, используй одинаковый order_id для этих строк. Не объединяй товарные группы в один общий порог. Добавь три тестовые строки с вымышленными данными и объясни, что означает каждая колонка. Не используй реальные ФИО, телефоны, реквизиты и идентификаторы чатов.
Правильный результат легко проверить глазами: у строки есть заказ, клиент, группа, позиция, количество, цена, доставка и статус. Тестовые данные не должны выглядеть как настоящие клиентские сведения.
Задай правила оптовой цены.
Здесь нельзя писать помощнику «посчитай скидку». Назови порог для каждой товарной группы и способ расчёта.
Добавить расчёт оптовой ценыДобавь в расчёт правило оптовой цены. Порог количества считается отдельно по каждой товарной группе, даже если несколько групп находятся в одном заказе. Для тестовой таблицы используй такие правила: - крепёж: оптовая цена действует от 50 единиц; - расходники: оптовая цена действует от 20 единиц; - инструмент: оптовая цена действует от 5 единиц. Если порог по группе не достигнут, используй обычную цену. Если достигнут, используй оптовую цену из отдельного прайса. Не угадывай цену, если она отсутствует. Покажи расчёт по каждой строке и общий итог заказа. Добавь отдельную строку доставки, не включай её количество в порог товарной группы. Перед изменением перечисли, какие формулы или файлы будут изменены.
Помощник должен показать промежуточный результат: группу, количество, применённый порог, выбранную цену и сумму. Если виден только общий итог, попроси раскрыть расчёт.
Добавь доставку отдельной строкой.
Доставка не должна случайно попасть в товарную группу или изменить право на оптовую цену.
Добавить доставку в счётДобавь доставку в расчёт и будущий счёт отдельной строкой. Стоимость доставки бери из поля delivery в строке заказа. Не включай delivery в количество товара и не учитывай её при проверке порога оптовой цены. В таблице и документе должны быть видны: - товары по товарным группам; - количество; - выбранная обычная или оптовая цена; - сумма по каждой позиции; - доставка отдельной строкой; - общий итог с доставкой. Если поле delivery пустое, показывай доставку как 0 и не скрывай строку из тестового счёта. Проверь пример с товарами из двух разных групп.
В ответе должна появиться отдельная строка доставки. Проверь заказ с одной группой и заказ со смешанными группами: оба итога должны считаться одинаково понятно.
Подготовь шаблон счёта.
Оформление лучше сделать заранее, а помощнику поручить связать маркеры с полями заказа.
Подготовить шаблон Google DocsСоздай структуру шаблона счёта Google Docs с понятными маркерами. Используй такие маркеры: {{ORDER_ID}} {{INVOICE_DATE}} {{CLIENT}} {{INN}} {{PRODUCT_LINES}} {{DELIVERY}} {{GRAND_TOTAL}} В документе должны быть заголовок счёта, дата, клиент, ИНН, таблица товарных позиций, отдельная строка доставки и общий итог. Подготовь решение так, чтобы данные из строки заказа подставлялись в маркеры, а несколько товарных строк одного order_id попадали в одну таблицу счёта. Не подставляй реальные данные. Покажи тестовый документ на вымышленных значениях и объясни, какие маркеры заменяются автоматически.В хорошем результате маркеры не остаются в готовом документе. Если в PDF видны двойные фигурные скобки, значит, поле не нашлось или название маркера отличается.
Собери PDF и ссылку.
После расчёта и шаблона добавь копирование документа, экспорт и сохранение в Google Drive.
Собрать создание PDF из строки заказаСвяжи Google Sheets и Google Docs. Найди строки со статусом Новый, прочитай поля заказа через getValues(), сгруппируй строки с одинаковым order_id, рассчитай цены по каждой товарной группе и добавь доставку отдельной строкой. Для каждого заказа: 1. скопируй шаблон Google Docs; 2. замени маркеры данными заказа через replaceText() или другой надёжный способ; 3. получи заполненный документ в PDF; 4. сохрани PDF в отдельную папку Google Drive; 5. запиши в таблицу ID документа, ссылку на PDF и время обработки; 6. не ставь статус Отправлен, пока отправка ещё не выполнена. Сначала работай только с одной тестовой строкой и вымышленными данными. Перед изменениями перечисли файлы и таблицы, которые будут затронуты.
Помощник выдаст изменённые файлы и объяснит запуск. Проверь один PDF: клиент, дата, позиции, оптовые цены, доставка и итог должны совпасть с тестовой строкой.
Добавь отправку и статусы.
Отправка должна быть последним этапом, а статус должен показывать не намерение, а факт.
Добавить отправку PDF через TelegramПосле успешного создания и сохранения PDF добавь отправку файла через Telegram Bot API методом sendDocument. Используй chat_id из строки заказа. Не вставляй токен бота в таблицу и не показывай его в интерфейсе. Раздели состояния: - Новый; - Обрабатывается; - Документ создан; - Ссылка записана; - Отправлен; - Ошибка. Если создание документа прошло, а отправка не прошла, сохрани ссылку на PDF и статус Ошибка отправки. Если отправка прошла, запиши время отправки и идентификатор сообщения, если API его вернул. Повторный запуск не должен создавать второй счёт для того же order_id без явного разрешения. Добавь понятный текст ошибки в отдельную колонку.
После первого результата проверь тестовую отправку на своём чате. Так собирают программы без программиста, и называется это вайб-кодинг. Успешный тест означает, что файл создался, ссылка записалась, сообщение пришло, а статус изменился только после отправки.
Связка Google Sheets -> Google Docs -> PDF выглядит простой, но в ней несколько независимых этапов. Я не стал просить помощника собрать всё одним огромным запросом. Если идти по шагам, легче понять, где ошибка и какую часть не нужно трогать.
Такая сборка полезна именно там, где правила принадлежат конкретному делу. Для одного магазина это порог по группе, для другого добавится особая доставка или отдельный шаблон постоянного покупателя. Сначала формулируй правило словами, потом проверяй его на тестовой строке.
Что появится в папке после сборки?

Обычно структура выглядит так:
optovyj-magazin/
plan.md
orders-template.csv
test-orders.csv
invoice-template/
markers.txt
checks/
test-cases.md
logs/
errors.txtОсновная таблица живёт в Google Sheets. В ней есть строки заказов, прайс и настройки порогов. Шаблон счёта хранится отдельно в Google Docs. Готовые документы и PDF складываются в выбранную папку Google Drive.
В строке заказа после обработки должны появиться:
status: Sent
document_url: ссылка на PDF
document_id: идентификатор документа
processed_at: дата и время
message_id: идентификатор отправкиЭти поля не надо воспринимать как лишнюю бюрократию. Если счёт создан, но не отправлен, это одна ситуация. Если отправлен, но ссылка не записалась, другая. Один общий статус «готово» обеих проблем не покажет.
Проверь шесть вещей:
- Количество по каждой товарной группе.
- Применённый порог оптовой цены.
- Доставку отдельной строкой.
- Клиента, дату и номер заказа в PDF.
- Ссылку, которая открывает нужный файл.
- Статус, соответствующий реальному этапу.
В код без необходимости я не лезу. Сначала смотрю таблицу, PDF, ссылку и журнал ошибки. Если помощник просит изменить файл, он должен сначала объяснить, что меняет и зачем.
Что делать, если счёт ушёл дважды или не ушёл?

Счёт ушёл дважды. Скрипт мог создать PDF и отправить его, но упасть до записи статуса Отправлен. При следующем запуске строка снова выглядит новой. Для защиты нужен уникальный ключ операции, например order_id + invoice_period, и проверка уже созданного документа до повторной отправки.
Проверь обработку заказа с order_id TEST-1001. По журналу PDF уже был создан и сообщение в Telegram пришло два раза. Найди, почему повторный запуск снова обработал ту же строку. Проверь порядок записи document_id, document_url, message_id и статуса. Предложи безопасную проверку, которая не создаёт второй документ и не отправляет второй файл без явного разрешения. Сначала объясни причину простыми словами, потом перечисли файлы для изменения.
Авторизация истекла. Автоматический триггер может перестать работать после повторной авторизации. Файл и кнопка при этом останутся на месте, поэтому поломку легко не заметить. В таблице держи last_run_at, last_success_at и last_error.
Автоматический запуск перестал обрабатывать новые строки, хотя таблица и скрипт открываются. В журнале нет успешных запусков после вчерашнего дня. Проверь, не требуется ли повторная авторизация для аккаунта, от имени которого работает триггер. Добавь понятную запись last_run_at, last_success_at и last_error. Не создавай новый триггер, пока не объяснишь, какой старый уже существует и что с ним происходит.
Дата стала другой. Таблица может хранить календарную дату, а скрипт обработать её как момент времени. Из-за часового пояса в счёте появляется предыдущий или следующий день. Для даты счёта задай единый формат и отдельно проверь последний день месяца.
В таблице стоит дата 05.08.2026, а в PDF появляется Tue Aug 05 2026 или предыдущий день. Найди, где дата превращается в другой формат или часовой пояс. Исправь обработку так, чтобы дата счёта оставалась календарной датой без сдвига. Проверь тесты для 00:30, последнего дня месяца и даты на границе месяца. Покажи мне результат каждого теста.
Скрипт не успел закончить. У Google Apps Script есть лимит времени выполнения одного запуска. Для личного аккаунта в документации указаны 6 минут. Если заказов много, часть документов уже создана, а часть осталась в промежуточном состоянии. Перед каждой строкой ставь Обрабатывается, а после каждого этапа обновляй статус.
Обработка нескольких заказов останавливается с ошибкой превышения времени выполнения. Часть PDF уже создана, но в таблице не видно, на каком этапе остановился каждый заказ. Раздели обработку на небольшие запуски. Перед началом строки ставь Обрабатывается, после создания документа записывай document_id, после сохранения PDF записывай document_url, после отправки ставь Отправлен. Добавь безопасное продолжение с последнего незавершённого order_id и не используй номер строки как постоянный идентификатор.
Выбран не тот шаблон. Одинаковые названия опасны. Если поиск берёт первое совпадение, для постоянного покупателя может собраться обычный счёт. Храни в таблице уникальный template_id, а не только название.
Для заказа TEST-1002 должен использоваться шаблон постоянного покупателя, но сформировался обычный шаблон. В папке есть два документа с одинаковым названием. Найди место, где выбирается шаблон. Переведи выбор на уникальный template_id из таблицы. Если шаблон не найден или найдено больше одного совпадения, не создавай документ молча, а записывай понятную ошибку. Добавь тест для каждого типа счёта.
Документ есть, ссылки нет. PDF мог сохраниться в Drive, но запись ссылки оборвалась. Или ссылка есть, а сообщение не отправилось. Поэтому статусы document_created, link_saved и message_sent должны быть разными.
Для заказа TEST-1003 PDF появился в Google Drive, но document_url в таблице пустой. Проверь последовательность создания файла, получения getUrl(), записи ссылки и отправки. Не удаляй исходную строку. Добавь отдельные поля document_id, document_url, created_at, sent_at, message_id и last_error. Покажи, какой статус должен быть у заказа после каждого этапа и как повторить только незавершённый этап.
Самая неприятная часть схемы пока остаётся за пределами описанной сборки: безопасное хранение токена Telegram Bot API и клиентских идентификаторов. Я не буду придумывать инструкцию, которой нет в подтверждённой схеме. Для реальной работы этот вопрос нужно закрыть отдельно до загрузки клиентских данных.
Сколько стоит своя схема и кому она не подойдёт?
Сравнение получается таким:
| Вариант | Цена | Что получаешь |
|---|---|---|
| Своя сборка | Claude Pro $20 в месяц, около 1 574 ₽ | Таблица, шаблон, PDF и правила под свою работу |
| «Моё дело» | от 458 ₽ в месяц | Счета и дополнительные бухгалтерские функции |
| «Моё дело» по FAQ | от 999 ₽ в месяц | Базовый тариф интернет-бухгалтерии |
| TableProf | от 2 900 ₽ в год | Шаблон таблицы, час настройки и поддержка |
| FL.ru: Google Sheets -> PDF | 3 250 ₽ разово | Автогенерация документов, состав услуги нужно уточнять |
| Kwork | 3 500-15 000 ₽ разово | Сложная автоматизация, API, бот и таблицы |
| GoogleSheets.ru | от 80 000 ₽ разово | Диагностика, проектирование, разработка и запуск |
Официальная цена Claude Pro - $20 в месяц. Пересчёт около 1 574 ₽ сделан по курсу ЦБ РФ на день оплаты и не включает комиссию оплаты из России. Отдельные расходы на Google Apps Script, Telegram Bot API и возможных посредников в эту сумму не добавляю: подтверждённой цены для них в документации нет.
У «Моего дела» на одной странице указаны две суммы: от 458 ₽ в месяц и от 999 ₽ в месяц в FAQ. На одной странице приведены две разные суммы, каждая для своего случая. Перед покупкой надо проверить тариф и условия подключения.
Свою схему я бы не выбирал для сложного бухгалтерского учёта, больших объёмов или задач с особыми требованиями к данным. Таблица не заменяет полноценную бухгалтерскую систему. Она решает конкретный маршрут: строка заказа, расчёт, документ, PDF, ссылка и отправка.
Клиентские данные тоже нельзя собирать без меры. В таблице оставляй только то, что нужно для счёта. Паспортные данные, сканы, банковские карты и переписку «на всякий случай» в этот процесс не добавляй.
Где физически хранятся базы и как сервис обрабатывает данные российских клиентов, нужно проверять отдельно. Для первого теста используй вымышленные значения. Рабочий запуск делай только после проверки доступа, хранения и правового основания обработки данных.
Свою схему стоит выбирать, если у тебя нестандартные правила и готовый сервис постоянно приходится обходить. Готовый сервис лучше подходит, если важнее сразу получить поддерживаемую бухгалтерскую систему и не хочется отвечать за каждый сбой в таблице.
После основного результата я бы не оставлял практику на уровне чтения. На практикуме эту задачу проходят руками: от описания строки заказа до проверки готового документа. Там легче увидеть, где собственное правило отличается от стандартного шаблона.
Пройти практикум можно здесь.
Что сделать сегодня, если технологии не твоя тема?
Возьми один заказ с товарами из двух товарных групп. Не загружай весь архив и не подключай сразу всех клиентов. Тебе достаточно проверить маршрут от строки до документа.
Порядок на сегодня такой:
- Создай копию таблицы с тестовыми данными.
- Запиши поля заказа и пороги по товарным группам.
- Подготовь один шаблон Google Docs с маркерами.
- Попроси помощника собрать только создание PDF.
- Открой готовый документ и сравни каждую строку с таблицей.
- После этого добавь ссылку, статусы и отправку.
- Замерь ручной перенос до и после.
Если помощник выдаёт слишком большую систему, останови его. Скажи: «Оставь только строку заказа, расчёт, шаблон и PDF. Не добавляй личные кабинеты, склад и отчёты». В этой задаче лишние функции не помогают.
Если не хочется разбираться с установкой и разрешениями, можно заказать базовую автоматизацию. На Kwork простая задача по Google Таблицам указана за 500 ₽, но счёт с шаблоном, PDF, отправкой и обработкой ошибок, скорее всего, выйдет за рамки базовой услуги. Состав работ надо фиксировать заранее.
Официальный пример Google рассчитан на начинающих и требует минимальной настройки. Sheetgo Invoice Generator ближе к сценарию «строки -> PDF»: таблица заменяет маркеры и складывает документы в Google Drive. Excel-шаблон проще для ручного заполнения, но сам по себе не превращает каждую строку в отдельный счёт.
На практикуме этому учат руками на своей задаче, а не на отвлечённом примере. После второй такой сборки вайб-кодинг уже не выглядит чужой технологией: ты просто описываешь свою рутину и проверяешь результат по шагам.
Начать можно на практикуме.
Вопросы и ответы
Вопросы и ответы
Можно ли сделать счёт из одной строки заказа?
Да. Скрипт читает строку Google Sheets, получает поля заказа, подставляет их в шаблон Google Docs и сохраняет заполненный документ в PDF. Если в заказе несколько товарных позиций, их лучше хранить отдельными строками с общим order_id, чтобы собрать их в один счёт.
Как посчитать оптовую цену в смешанном заказе?
Количество нужно проверять отдельно по каждой товарной группе. Нельзя складывать крепёж, расходники и инструмент в один общий порог. Для каждой группы задай собственный порог и обычную или оптовую цену, затем добавь доставку отдельной строкой.
Можно ли отправить готовый PDF в Telegram?
Да. Apps Script может отправить HTTP-запрос в Telegram Bot API, а PDF передаётся методом sendDocument. Для отправки нужен chat_id. В документации Telegram указан максимальный размер файла 50 МБ.
Что будет, если скрипт остановился после создания документа?
Если статус не записался, следующий запуск может создать второй PDF или повторно отправить файл. Поэтому отдельно храни ID документа, ссылку, время отправки и ошибку. Перед повтором проверяй, существует ли уже документ для этого order_id.
Сколько стоит такая автоматизация?
Claude Pro стоит $20 в месяц, что составит около 1 574 ₽ по курсу ЦБ РФ на день оплаты, без комиссии оплаты из России. Готовые предложения начинаются от 458 ₽ или от 999 ₽ в месяц у «Моего дела», от 2 900 ₽ в год у TableProf, а услуги автоматизации стоят от 3 250 до 15 000 ₽ и выше.
Подойдёт ли схема для полноценного бухгалтерского учёта?
Нет, если нужен сложный учёт, большой объём операций или особые требования к данным. Такая схема закрывает конкретный маршрут: заказ, расчёт, счёт, PDF, хранение ссылки и отправку. Для полноценной бухгалтерии сравни её с готовой системой.
Можно ли сразу загрузить реальные данные клиентов?
Сначала используй вымышленные данные. Для рабочей таблицы оставляй только сведения, необходимые для выставления счёта, и отдельно проверь место хранения баз, доступы и условия обработки данных выбранными сервисами.
Источники
- Google: Generate & send PDFs from Google Sheets
- Google Apps Script: Range и метод getValues()
- Google Apps Script: Document и метод replaceText()
- Google Apps Script: File и сохранение PDF в Drive
- Telegram Bot API: sendDocument
- Sheetgo Invoice Generator
- Anthropic: Plans & Pricing
- Anthropic Help Center: планы Claude
- Anthropic: лимиты Claude Code
- Google Apps Script: квоты сервисов
- «Моё дело»: тарифы на выставление счетов
- TableProf: автоматизация бизнеса в Google Sheets
- Kwork: автоматизация Google Таблиц
- FL.ru: интеграция Google Sheets -> PDF
- GoogleSheets.ru: цены на автоматизацию
- Федеральный закон № 152-ФЗ, статья 5
Это собирательная история выпускников практикума, а не рассказ одного человека: так эта работа устроена в большинстве таких дел.
Практикум «Старт»
Три дня живой практики: от идеи до работающего проекта по ссылке
2 000 ₽старт 5 августа, 18:00 МСК

