Перейти к основному содержимому

Действие «Google Таблицы»

«Google Таблицы» — действие в сценарии действий, которое подключает к боту таблицу Google Sheets. Бот может читать, добавлять и изменять строки в живой таблице — это удобно, когда менеджер ведёт каталог/CRM в Google и не хочет переходить в Квесчу.

В отличие от внутренних списков Квесчи, Google Таблицы:

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

Когда использовать Google Таблицы вместо списков

ЗадачаЧто выбрать
Каталог товаров (50-500 позиций)Google Sheets (правит весь отдел)
Журнал заказов с быстрой выгрузкойGoogle Sheets (через скачивание XLSX)
Корзина клиента (живёт минуты)Список Квесчи
История диалоговСписок Квесчи (быстрее)
Прайс, который обновляет менеджерGoogle Sheets
Заявки для CRM-выгрузкиGoogle Sheets

Часть 1. Подготовка — Google сервисный аккаунт (необязательно, если подключен Гугл Аккаунт)

  1. Откройте Google Cloud Console.
  2. Создайте проект (или выберите существующий).
  3. Включите Google Sheets API.
  4. IAM & Admin → Service Accounts → Create.
  5. Скачайте JSON-ключ (это и есть «сервисный аккаунт»).
  6. Откройте вашу Google Таблицу → Поделиться → добавьте email сервисного аккаунта (из JSON) с правами «Редактор».

Сервисный аккаунт Google

Скриншот 1. JSON сервисного аккаунта.

Часть 2. Подключение в действии

Шаг 1. Добавьте действие

В сценарии действий → «Добавить действие»«Google Таблицы».

Шаг 2. Подключите аккаунт

В поле «Google-аккаунт» выберите подключённый или вставьте JSON-ключ в поле «Сервисный аккаунт».

Подключение один раз

Аккаунты подключайте в разделе Интеграции → Google. Дальше выбирайте из выпадающего списка во всех действиях.

Шаг 3. Укажите таблицу и лист

ПолеЗначение
Sheet IDID из URL таблицы. В https://docs.google.com/spreadsheets/d/1AB...XYZ/edit — это 1AB...XYZ. Можно подставлять переменную
ЛистИндекс листа, начиная с 0. Первый лист = 0, второй = 1

Sheet ID и лист

Скриншот 2. Подключение к конкретной таблице.


Часть 3. Три операции

В действии может быть несколько операций — выполняются последовательно.

ОперацияЧто делает
Найти (find)Прочитать строки по условиям отбора
Добавить (add)Создать новую строку
Изменить (edit)Обновить ячейки в найденных строках

Три операции

Скриншот 3. Выбор операции с таблицей.


Часть 4. Операция «Найти»

Условия отбора

Каждое условие = колонка + сравнение + значение:

ПараметрЗначение
КолонкаИмя колонки из первой строки таблицы
Условие сравненияРавно, содержит, больше, меньше и т.д.
ЗначениеТекст / переменная / шаблон

Несколько условий объединяются через И / ИЛИ.

Доп. опции:

  • Обратное сравнение: искать колонку в значении (а не наоборот);
  • По основе слова: без учёта склонений.

Сохранение результата

В разделе «Сохранение» добавьте пары:

  • Из колонки — какую колонку брать;
  • В переменную — куда сохранить.

Если найдено несколько строк, переменная — массив. Используйте перебор в «Операциях с данными» или обращение #{var|1}, #{var|last}.

Дополнительно сохраняется:

  • Имя переменной (наличие отбора): 1 — есть результат, 0 — нет.

Часть 5. Операция «Добавить»

Создание новой строки в таблице.

В разделе «Добавление» заполните пары:

  • Колонка — куда писать;
  • Значение — что писать (текст / переменная / шаблон).

Колонки, не указанные в операции, останутся пустыми в новой строке.

Пример: запись заявки

Колонка: ClientID    →  Значение: [ClientID]
Колонка: Name → Значение: [Name]
Колонка: Phone → Значение: #{client_phone}
Колонка: Order_Sum → Значение: #{order_sum}
Колонка: Date → Значение: [CurrentDate]

После запуска — новая строка появится в таблице моментально.


Часть 6. Операция «Изменить»

Обновление существующих строк по условиям отбора.

Условия отбора

Как в операции «Найти» — кого изменить.

Изменения

Раздел «Изменения»:

  • Колонка — что меняем;
  • Значение — на что меняем.

Пример: пометить заказ оплаченным

Условие: ColumnA = #{order_id}
Изменение: Status → "Оплачен"
Изменение: PaidAt → [CurrentDate]

Изменятся все строки, попавшие в отбор.


Часть 7. Типовые сценарии

Сценарий 1. Каталог в Google Sheets

  1. Менеджер ведёт таблицу «Каталог» с колонками name, price, stock, category.
  2. В блоке бота клиент выбирает категорию → [Answer1] = Кофе.
  3. Действие «Google Таблицы» → Найти → условие category = [Answer1]. Сохранить в массив goods.
  4. Перебор массива → формирование строки → отправка клиенту.

Сценарий 2. Заявка в общий журнал

  1. Клиент оставляет заявку (имя, телефон, услуга).
  2. Действие «Google Таблицы» → Добавить строку в журнал «Заявки».
  3. Менеджеры видят в реальном времени, обрабатывают.

Сценарий 3. Отметка обработанной заявки

  1. Менеджер пишет в специальный канал «Заявка #123 обработана».
  2. Цепочка ловит это сообщение.
  3. Действие «Google Таблицы» → Изменить строку с ID = 123 → колонка Status = Обработано.

Сценарий 4. Динамические цены

  1. Менеджер меняет цену в таблице.
  2. При запросе клиента бот через Найти подтягивает актуальную цену.
  3. Никаких правок в сценариях.

Сценарий 5. Расписание мероприятий

  1. Таблица с колонками event_name, date, time, places_left, link.
  2. Бот при запросе «Расписание» → Найти строки на текущую неделю.
  3. Перебор → отправка списка с кнопками-ссылками.

Часть 8. Архитектура

Принцип 1. Sheet ID и индекс листа — в глобальные переменные

g_catalog_sheet, g_orders_sheet — храните там. При смене таблицы — меняете в одном месте.

Принцип 2. Не используйте Sheets для частых записей

Google API имеет лимит ~60 запросов в минуту. Корзину, активные диалоги — храните в списках Квесчи.

Принцип 3. Первая строка — заголовки

Названия колонок Квесча берёт из первой строки. Не оставляйте её пустой, не пихайте туда промо-текст.

Принцип 4. Структуру меняйте через «Загрузить структуру»

После добавления колонок в таблице обязательно перезагрузите структуру в действии — иначе колонка не появится в списках.

Принцип 5. Дублируйте критичные данные в списки Квесчи

Если Google API упал — бот без записей. Дублируйте оплаты в локальный список параллельно с записью в Sheets.

Принцип 6. Доступ только сервисному аккаунту

Не давайте общий доступ «всем по ссылке». Только сервисный аккаунт + ваша команда. JSON-ключ — не показывайте никому.


Часть 9. Сравнение с списками Квесчи

Google SheetsСписок Квесчи
Скорость записиМедленнее (~1-2 сек)Быстро (мс)
Лимиты APIЕсть (60/мин)Нет
Правит команда вне Квесчи
Видно в реальном времениТолько в админке Квесчи
Экспорт в XLSX✓ (нативно)Через раздел «Списки»
Подходит для корзины
Подходит для журнала заявокТоже хорошо
СтоимостьБесплатноВключено в тариф

Частые ошибки

  • 403 The caller does not have permission — не дали доступ сервисному аккаунту к таблице (нужно «Редактор»).
  • Quota exceeded — превысили лимит API. Уменьшите частоту обращений, используйте списки для часто пишущихся данных.
  • Sheet ID не найден — проверьте, что вы скопировали именно 1AB...XYZ из URL, а не всю ссылку.
  • Колонки пустые — не нажали «Загрузить структуру», или первая строка таблицы пустая.
  • Изменилось не то, что ожидали — слишком широкие условия отбора. Добавьте уникальный фильтр (по ID или ClientID).
  • Записи не появляются — индекс листа неверный. Первый лист = 0, не 1.

Что дальше