Действие «Google Таблицы»
«Google Таблицы» — действие в сценарии действий, которое подключает к боту таблицу Google Sheets. Бот может читать, добавлять и изменять строки в живой таблице — это удобно, когда менеджер ведёт каталог/CRM в Google и не хочет переходить в Квесчу.
В отличие от внутренних списков Квесчи, Google Таблицы:
- доступны всей команде через привычный Google-интерфейс;
- редактируются вручную в любой момент;
- видны в реальном времени всем, у кого есть доступ;
- удобны для бухгалтерии, отчётов, выгрузок.
Когда использовать Google Таблицы вместо списков
| Задача | Что выбрать |
|---|---|
| Каталог товаров (50-500 позиций) | Google Sheets (правит весь отдел) |
| Журнал заказов с быстрой выгрузкой | Google Sheets (через скачивание XLSX) |
| Корзина клиента (живёт минуты) | Список Квесчи |
| История диалогов | Список Квесчи (быстрее) |
| Прайс, который обновляет менеджер | Google Sheets |
| Заявки для CRM-выгрузки | Google Sheets |
Часть 1. Подготовка — Google сервисный аккаунт (необязательно, если подключен Гугл Аккаунт)
- Откройте Google Cloud Console.
- Создайте проект (или выберите существующий).
- Включите Google Sheets API.
- IAM & Admin → Service Accounts → Create.
- Скачайте JSON-ключ (это и есть «сервисный аккаунт»).
- Откройте вашу Google Таблицу → Поделиться → добавьте email сервисного аккаунта (из JSON) с правами «Редактор».

Скриншот 1. JSON сервисного аккаунта.
Часть 2. Подключение в действии
Шаг 1. Добавьте действие
В сценарии действий → «Добавить действие» → «Google Таблицы».
Шаг 2. Подключите аккаунт
В поле «Google-аккаунт» выберите подключённый или вставьте JSON-ключ в поле «Сервисный аккаунт».
Аккаунты подключайте в разделе Интеграции → Google. Дальше выбирайте из выпадающего списка во всех действиях.
Шаг 3. Укажите таблицу и лист
| Поле | Значение |
|---|---|
| Sheet ID | ID из URL таблицы. В https://docs.google.com/spreadsheets/d/1AB...XYZ/edit — это 1AB...XYZ. Можно подставлять переменную |
| Лист | Индекс листа, начиная с 0. Первый лист = 0, второй = 1 |

Скриншот 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
- Менеджер ведёт таблицу «Каталог» с колонками
name,price,stock,category. - В блоке бота клиент выбирает категорию →
[Answer1]=Кофе. - Действие «Google Таблицы» → Найти → условие
category = [Answer1]. Сохранить в массивgoods. - Перебор массива → формирование строки → отправка клиенту.
Сценарий 2. Заявка в общий журнал
- Клиент оставляет заявку (имя, телефон, услуга).
- Действие «Google Таблицы» → Добавить строку в журнал «Заявки».
- Менеджеры видят в реальном времени, обрабатывают.
Сценарий 3. Отметка обработанной заявки
- Менеджер пишет в специальный канал «Заявка #123 обработана».
- Цепочка ловит это сообщение.
- Действие «Google Таблицы» → Изменить строку с
ID = 123→ колонкаStatus=Обработано.
Сценарий 4. Динамические цены
- Менеджер меняет цену в таблице.
- При запросе клиента бот через Найти подтягивает актуальную цену.
- Никаких правок в сценариях.
Сценарий 5. Расписание мероприятий
- Таблица с колонками
event_name,date,time,places_left,link. - Бот при запросе «Расписание» → Найти строки на текущую неделю.
- Перебор → отправка списка с кнопками-ссылками.
Часть 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.
Что дальше
- Списки Квесчи — быстрая альтернатива для оперативных данных.
- Google Календарь — синхронизация событий.
- Google Диск — хранение файлов.
- CRM — выгрузка заявок в AmoCRM/Bitrix24.
- HTTP-запросы — кастомные интеграции, если Google API не хватает.