Добавить в корзинуПозвонить
Найти в Дзене
Блокнот интегратора

n8n и Google Таблицы: 4 сценария автоматизации, которые я настраиваю чаще всего

Я занимаюсь внедрением и автоматизацией уже несколько лет. Через мои руки прошли десятки проектов на Битрикс24, amoCRM и самописных решениях. Когда в арсенале появился n8n, грань между «надо писать скрипт» и «делается за 15 минут» окончательно стёрлась. Ниже — четыре типовых сценария работы с Google Таблицами, которые я использую в проектах регулярно. Никакой воды, только логика работы и ключевые моменты, на которых обычно спотыкаются новички. Контекст. Клиент использует несколько каналов для приёма заявок: форма на сайте, Telegram-бот, заявки из VK и прочие мессенджеры. Раньше менеджеры вручную сводили всё в один реестр. Естественно, часть заявок терялась, дублировалась, ответы задерживались. Реализация. Я поднимаю простой workflow на трёх узлах. На что обратить внимание. Если источник — Google Форма, я не использую Webhook. Проще взять Google Sheets Trigger с событием Row Added. Он надёжнее и не требует настройки передачи данных на стороне формы. Но есть нюанс: триггер срабатывает с
Оглавление

Я занимаюсь внедрением и автоматизацией уже несколько лет. Через мои руки прошли десятки проектов на Битрикс24, amoCRM и самописных решениях. Когда в арсенале появился n8n, грань между «надо писать скрипт» и «делается за 15 минут» окончательно стёрлась.

Ниже — четыре типовых сценария работы с Google Таблицами, которые я использую в проектах регулярно. Никакой воды, только логика работы и ключевые моменты, на которых обычно спотыкаются новички.

Сценарий 1. Сбор данных из разных источников в одну таблицу

Контекст. Клиент использует несколько каналов для приёма заявок: форма на сайте, Telegram-бот, заявки из VK и прочие мессенджеры. Раньше менеджеры вручную сводили всё в один реестр. Естественно, часть заявок терялась, дублировалась, ответы задерживались.

Реализация. Я поднимаю простой workflow на трёх узлах.

  1. Webhook. Это точка входа. На стороне сайта или бота настраивается отправка POST-запроса на URL, который генерирует n8n. В теле запроса передаются поля: имя, контакт, источник.
  2. Google Sheets (Append). Узел получает распарсенные данные и добавляет новую строку в указанную таблицу. Важный момент: слежу за соответствием полей. Если в Webhook приходит поле client_name, а в таблице столбец называется Имя, использую промежуточный узел Set для переименования.
  3. Telegram. Отправка уведомления ответственному. В сообщение вывожу ключевые поля и ссылку на строку в таблице (если реализовано).

На что обратить внимание. Если источник — Google Форма, я не использую Webhook. Проще взять Google Sheets Trigger с событием Row Added. Он надёжнее и не требует настройки передачи данных на стороне формы. Но есть нюанс: триггер срабатывает с задержкой до минуты, для мгновенных уведомлений это не подходит.

Сценарий 2. Ежедневная сводка по продажам с выводом в чат

Контекст. Руководитель отдела продаж хочет видеть сводку за вчерашний день в 9:00 в общем чате Telegram. Не ссылку на таблицу, а готовый текст с цифрами и краткими выводами.

Реализация. Workflow запускается по расписанию.

  1. Schedule Trigger (Cron). Выражение 0 9 * * * — запуск в 9 утра каждый день.
  2. Google Sheets (Get Rows). Забираю данные из таблицы с продажами. В настройках узла использую фильтр по колонке с датой, чтобы не тащить всю таблицу, а только строки за вчерашний день. Это критично для производительности.
  3. Code (JavaScript). Пишу короткий скрипт, который агрегирует данные: считает сумму по колонке «Сумма оплаты», определяет менеджера с максимальным значением, проверяет наличие нулевых или аномально низких показателей.
  4. GigaChat (AI). Скармливаю агрегированные данные и промпт: «На основе этих цифр напиши короткую сводку на 3-4 предложения. Стиль — деловой, без эмоций. Упомяни общую сумму, лидера и аномалии, если они есть».
  5. Telegram. Отправляю сгенерированный текст в чат.

Почему не сразу AI без Code. Я предпочитаю сначала агрегировать данные в коде, а нейросети отдавать уже готовую структуру. Это снижает вероятность галлюцинаций и делает ответ стабильным. AI здесь выступает как «копирайтер», а не как «аналитик».

-2

Сценарий 3. Двусторонняя синхронизация таблицы и внешней базы

Контекст. У клиента есть производственная база на MySQL, куда складские работники вносят актуальные остатки. Отдел продаж работает в Google Таблице, потому что «им так удобно». Задача — чтобы данные в таблице обновлялись автоматически и не требовали ручного экспорта.

Реализация. Workflow с периодическим запуском и логикой сравнения.

  1. Schedule Trigger. Запуск каждый час.
  2. MySQL Node. Выполняет SELECT по таблице остатков.
  3. Google Sheets (Get Rows). Забирает текущее содержимое листа.
  4. Code. Сравниваю два массива по ключевому полю, например product_id. На выходе формирую три списка: «добавить», «обновить», «удалить».
  5. Switch. В зависимости от наличия элементов в списках направляю поток на соответствующие узлы:
    Google Sheets (Append) — для новых позиций.
    Google Sheets (Update) — для изменения существующих.
    Google Sheets (Delete) — для удаления (если нужно).

Подводный камень. Узел Update в Google Sheets требует указания номера строки. Поэтому в Code я дополнительно формирую маппинг product_id -> row_index. Без этого обновление не сработает.

-3

Сценарий 4. Мониторинг критических значений

Контекст. В таблице ведётся учёт расходных материалов. Когда позиция заканчивается, ответственный должен получить мгновенное уведомление, чтобы успеть заказать новую партию.

Реализация. Workflow на основе триггера изменения данных.

  1. Google Sheets Trigger (On Row Updated). Срабатывает при любом изменении в отслеживаемом диапазоне.
  2. IF. Проверяю условие: {{ $json.Остаток }} <= {{ $json.Минимальный_запас }}.
  3. Telegram. Если условие истинно — уведомление с указанием позиции и текущего остатка.

Нюанс. Триггер On Row Updated срабатывает на любое изменение ячейки. Если сотрудник несколько раз подряд меняет значение, уведомление уйдёт несколько раз. Чтобы избежать спама, я добавляю узел Wait с задержкой в 1 минуту и проверку флага «уведомление уже отправлялось» в отдельной служебной колонке таблицы.

-4

Пара слов о производительности

Когда работаешь с таблицами на несколько тысяч строк, скорость выполнения workflow начинает падать. Что я делаю в таких случаях:

  1. Фильтрация на стороне запроса. В узле Google Sheets использую параметр Filter с формулой, чтобы забирать только нужные строки. Например, Date = date '2026-04-12'.
  2. Отказ от лишних узлов. Каждый узел — это накладные расходы. Если можно сделать операцию в одном Code вместо цепочки из Set + IF + Merge, делаю в Code.
  3. Schedule вместо Webhook для регулярных задач. Webhook-триггеры держат соединение открытым и потребляют больше ресурсов, чем Cron-задачи.

Google
89,1 тыс интересуются