Разработка · 7 мин чтения

N8n интеграция Telegram и Google Sheets: пошаговая настройка без кода

Настраивал n8n интеграцию telegram и google sheets на практике для десятка задач: от логирования заявок с сайта на WooCommerce до сбора обратной связи из бота, который раньше писали на aiogram и держали отдельным сервисом на VPS. Разница в подходе не только в скорости - цепочку от сообщения в Telegram до строки в таблице через n8n я собираю за вечер, без единой строчки Python. Дальше - рабочая схема с настройками узлов, авторизацией Google и ошибками, на которые обычно натыкаются в первый час работы.

Зачем связывать Telegram и Google Sheets в n8n

Таблица в Google Sheets на старте проекта работает как облегчённая CRM: туда падают заявки из формы на сайте, ответы бота, статусы заказов из СДЭК-трекинга или лог сообщений от клиентов. Пока в проекте до 500‑1000 записей в месяц, отдельная база данных избыточна - таблицу видят все в команде без доступа к серверу, в ней можно фильтровать и считать формулами.

Раньше для такой задачи писали Telegram-бота на aiogram с обработчиком сообщений и клиентом gspread для записи в таблицу. Рабочий вариант, но требует хостинга под бота, обработки исключений API и обновлений библиотек. n8n убирает разработку из уравнения: узел Telegram Trigger ловит сообщение, узел Google Sheets пишет строку, между ними - фильтры и преобразования без кода. Для тестового MVP или внутреннего инструмента это экономит недели.

Похожая схема часто нужна не только для ботов: вебхук от Т‑Банка после оплаты или скрипт на Tilda-форме тоже можно направить в ту же таблицу через n8n, просто заменив узел Telegram Trigger на Webhook - принцип «триггер → фильтр → запись в Sheets» одинаковый для любого источника данных.

Как устроена цепочка: Telegram Trigger, Google Sheets и узлы между ними

Базовый воркфлоу состоит из трёх типов узлов.

Первый - Telegram Trigger, слушает апдейты от бота через вебхук (n8n Cloud и self-hosted с HTTPS) или через polling при локальном тестировании. Второй - узлы обработки: IF или Switch фильтруют команды и типы сообщений, Set (Edit Fields) собирает нужные поля в плоский объект. Третий - Google Sheets, с операциями Append (добавить строку), Update (обновить существующую) или Append or Update (совместить оба сценария по ключевому столбцу).

На практике 70% воркфлоу под эту задачу укладываются в четыре узла: Telegram Trigger → IF (фильтр по типу апдейта) → Edit Fields (маппинг) → Google Sheets (Append).

Пошаговая настройка воркфлоу n8n

Бот в Telegram и токен BotFather

Бот создаётся у @BotFather командой /newbot, токен вставляется в n8n при создании credential типа Telegram API. В самом n8n добавляется узел Telegram Trigger, в нём выбирается это credential и события, которые нужно ловить - обычно Message и Callback Query, если планируются inline-кнопки.

Для self-hosted n8n через Docker вебхук должен быть доступен по HTTPS - я обычно проксирую через Nginx с сертификатом Let’s Encrypt, локально для отладки хватает polling-режима или ngrok.

Подключение Google Sheets: OAuth2 или сервисный аккаунт

Два варианта авторизации. OAuth2 - быстрее для одного аккаунта, n8n откроет окно Google-логина и сам получит токен, обновляемый автоматически. Сервисный аккаунт (Service Account) удобнее для продакшена и командной работы: создаётся в Google Cloud Console, JSON-ключ грузится в n8n, а саму таблицу расшариваешь на email сервисного аккаунта с правами редактора.

Я обычно ставлю сервисный аккаунт сразу, даже для небольших проектов - если бот переезжает на другой сервер или credential нужно перевыпустить, привязка к личному Google-аккаунту разработчика создаёт лишнюю зависимость.

Маппинг полей и тестовый запуск

В узле Google Sheets выбирается таблица, лист и режим Append. Поля сопоставляются вручную или через Map Automatically - но для чужих таблиц с нестандартными заголовками надёжнее указать соответствие руками, чтобы порядок столбцов не сбился при следующем редактировании таблицы.

Данные из Telegram достаются через expressions с обращением к JSON-структуре апдейта:

{{$json["message"]["from"]["username"]}}
{{$json["message"]["text"]}}
{{$json["message"]["date"]}}

После сохранения - тестовый запуск (Test workflow) и сообщение боту: строка должна появиться в таблице за одну-две секунды. Если воркфлоу активирован (Active), дальше он работает без ручного запуска - n8n сам поднимает вебхук при каждом деплое.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

Обратная связь: как отправлять данные из таблицы обратно в Telegram

Обратный сценарий - таблица меняется, бот присылает уведомление. Тут нужен Schedule Trigger (по крону, например раз в 10 минут) или Google Sheets Trigger, который следит за изменениями листа. Дальше - узел Telegram (не Trigger, а обычный, с операцией Send Message), в него передаётся chat_id, сохранённый ранее в той же таблице.

Такую связку я собирал для проекта с трекингом заказов через СДЭК: статус доставки обновлялся в таблице вручную менеджером, а бот раз в 15 минут проверял столбец «статус» и слал клиенту сообщение при изменении. Без бэкенда - только n8n и Google Sheets как база.

Типичные ошибки при интеграции n8n, Telegram и Google Sheets

На старте почти все натыкаются на одни и те же грабли.

  • Активный webhook у бота уже занят другим сервисом - Telegram отдаёт ошибку 409, пока не снят старый вебхук через getWebhookInfo/deleteWebhook.
  • Лимит Google Sheets API - 60 запросов на запись в минуту на пользователя. При потоке сообщений выше этого стоит добавлять узел Split in Batches или паузу через Wait.
  • Дублирование строк при повторной доставке апдейта от Telegram - помогает проверка по message_id перед записью или режим Append or Update с ключевым столбцом.
  • Часовой пояс в поле даты: n8n по умолчанию пишет в UTC, для таблиц с расчётами по МСК дату нужно явно конвертировать через выражение с указанием зоны Europe/Moscow.
  • Просроченный OAuth2-токен после смены пароля Google-аккаунта - ещё один довод в пользу сервисного аккаунта на проде.

Персональные данные клиентов и 152-ФЗ: что нельзя держать в Google Sheets

Google Sheets физически хранится на серверах Google за пределами России. Для служебных данных - логов, аналитики, статусов без привязки к личности - это не проблема. Но если в таблицу попадают ФИО, телефон, email или адрес доставки клиента, формально это персональные данные, и по статье 18 152-ФЗ их нужно хранить и обрабатывать на серверах в РФ.

На практике я развожу эти потоки: обезличенные метрики и внутреннюю аналитику веду в Google Sheets через n8n, а персональные данные клиентов переношу в CRM или базу на российском хостинге - тот же n8n спокойно пишет в PostgreSQL или MySQL вместо таблицы, меняется только последний узел цепочки. Если у проекта уже есть Google-таблица с контактами клиентов, обычно есть смысл вынести именно её в отдельную защищённую базу, оставив Sheets для нечувствительных данных.

Сколько стоит настройка интеграции n8n с Telegram и Google Sheets

У других разработчиков и в студиях настройка похожей цепочки на фрилансе обычно стоит от 15 000 до 50 000 ₽ в зависимости от сложности логики и количества таблиц. Разброс большой, потому что часто в эту сумму закладывают ещё и объяснение заказчику, как вообще работает n8n.

Я беру настройку автоматизации в n8n от 25 000 ₽ - сюда входит сама цепочка, тестовые прогоны и перенос данных, если у клиента уже есть таблица с историей. Если нужна более сложная логика - интеграция с CRM, эквайрингом или несколькими ботами одновременно, - сумма растёт от объёма узлов и внешних API, с которыми приходится работать.

Задача Ориентир на рынке Моя цена
Простая связка бот → таблица 15 000-25 000 ₽ у фрилансеров от 25 000 ₽
Двусторонняя синхронизация с уведомлениями 25 000-50 000 ₽ в студиях от 25 000 ₽
Интеграция с CRM или эквайрингом поверх n8n от 60 000 ₽ в студиях от 25 000 ₽ (расчёт по объёму)

Связка сервисов без программистов

Автоматизация / n8n

от 25 000 ₽

Подробнее →

Частые вопросы

Нужно ли устанавливать n8n на свой сервер или хватит облачной версии?

Для тестового воркфлоу или проекта с небольшим потоком сообщений облачной версии n8n Cloud достаточно - вебхук поднимается автоматически, не нужно думать про сертификаты. Self-hosted через Docker имеет смысл, когда важен контроль над данными, нужны кастомные ноды или число выполнений воркфлоу выходит за лимиты тарифа.

Можно ли подключить несколько Telegram-ботов к одной Google-таблице?

Да, через отдельные узлы Telegram Trigger с разными credential в одном воркфлоу или через несколько воркфлоу, пишущих в один лист с разными операциями Append. Стоит развести идентификацию источника - добавить столбец с именем бота или chat_id, чтобы потом отличать, откуда пришла запись.

Что делать, если Google Sheets API возвращает ошибку квоты?

Ошибка 429 означает превышение лимита запросов - 60 записей в минуту на пользователя и 300 на проект. Помогает батчинг через узел Split in Batches с паузой между группами или переход на запись через диапазоны вместо построчных запросов, если объём данных стабильно большой.

Заменяет ли n8n полноценного Telegram-бота на aiogram?

Для сценариев с простой логикой - приём заявок, уведомления, синхронизация с таблицей - n8n закрывает задачу полностью и быстрее. Для бота с состояниями, платежами внутри Telegram, инлайн-играми или сложным FSM aiogram даёт больше контроля над поведением и не так завязан на визуальный редактор - тут я обычно комбинирую: базовую логику держу в n8n, а сложные куски выношу в отдельный сервис, который дёргается вебхуком из того же воркфлоу.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Самозанятый Калинкин Н. А. · работаю с физлицами и юрлицами

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно