Создание Базы Данных через Google Sheets в Integromat для интеграции с ботом
База знаний/Интеграции/Создание Базы Данных через Google Sheets в Integromat для интеграции с ботом

В статье приведены возможности связи Integromat и Google Sheets, а также инструкция подключения.


Google Sheets — таблица данных, она же БД (база данных). Очень полезный инструмент позволяющий собирать/хранить/обрабатывать данные любого типа с возможностью дальнейшего взаимодействия с этими данными. Google Sheets относится к многопользовательской системе — т.е. это система в которых к базе данных могут получить доступ сразу несколько пользователей.


Для чего вам точно понадобится БД?


  1. Сбор пользовательской информации (ФИО, user_id, ответы, статистика, отчетность);
  2. Взаимодействие с другими системами (например, функцию Регистрации сделать без БД не удастся, потому что нужно где-то фиксировать зарегистрированных пользователей и, время от времени, обращаться к таблице авторизованных пользователей для дальнейшей обработки: удаление, редактирование и т.д.);

Стоит отметить, что кроме базовой функции хранить, таблицы способны производить различные действия внутри своей платформы. Например, в таблицу месячной отчетности (готовая структура) достаточно добавить ответ пользователя (из бота), тем самым автоматизировав какой-то процесс работы или задействовать необходимые плагины (расширения). Иными словами — БД способна существовать как самостоятельная инстанция и как часть сложной системы.


У нас, в Базе знаний, уже существует статья о том как Интегрировать формы ввода с таблицей Google Sheets через Integromat. Возьмем пример посложнее и реализуем систему регистрации/авторизации в боте.



Способ выполнения:

  1. Привязываем вебхук;
  2. Предварительный запуск;
  3. Получаем наши данные из формы (маленький круг - индикатор с цифрой 1);
  4. Добавляем в связку модули Google Sheets и Telegram Bot (заранее создайте таблицу для работы с заголовками: USER_ID, USERNAME, NAME, CATEGORY, SOURCE и другие нужные вам поля);
  5. В конструкторе Puzzlebot:
    1. Создаем форму соглашения, чтобы мы получили первичную информацию для занесения в БД (user_id, Имя пользователя и т.д.). В связке с Инлайн командами переходы выглядят куда привлекательней;
    2. Две обычные команды: Регистрация и Авторизация
      1. Регистрация. Этой командой мы, посредством Форм, собираем все необходимые данные от пользователя: ФИО, откуда узнали о нас и т.д.
      2. Авторизация. Нужна лишь для того, чтобы пользователь, который повторно запустит бота (/start), будуче зарегистрированным, не проходил повторно процедуру регистрации. Т.е., кнопка авторизации производит проверку в БД и направляет к основному контенту: например, Меню бота.
  6. Переходим в Integromat (у вас уже должен быть привязан вебхук):
    1. Добавляем модуль Google Sheets, триггер Search Rows (ниже есть описание этого триггера);
    2. Подключаемся к таблице Spreadsheet и Sheet;
    3. В Column range (диапазон колонн) задаем A-Z (в каком конкретно диапазоне искать);
    4. В первом выподающем списке блока Filter выбираем USER_ID (А) — производим поиск по id пользователя, т.к. это значение уникально; во вторую графу перетаскиваем полученную от бота переменную— user.id (бордовый кубик). Между графами выставляем параметр Equal to (равный к.../такой же как...). Данный фильтр сверяет ID в БД и пользователя, который обратился к боту.
    5. Добавляем 1 модуль Router (кликаем 1 раз). С этого момента у нас начинается проверка условий. В фильтре, между Google Sheets и Router указываем: {{1.command_name}} — Equal to — Регистрация (название команды в конструкторе) + (Add OR rule) + {{1.command_name}} — Equal to — Регистрация.


  1. Регистрация:
    1. Пользователя нет в БД. Добавляем модуль Telegram Bot с содержанием (в Text) "Регистрация успешно пройдена ✅". Внизу окна настроек поставьте птичку напротив Show advanced settings, а в пункте Enter/Assemble the Reply Markup Field выбираем вторую строку. Далее, Keyboard — Add item x2 — Меню (в графе Text - так мы добавили кнопку на команду Меню). Не забудьте выбрать Yes в Flag if to Resize Keyboard Vertically for Optimal Fit.  Остался еще один модуль (сразу после Telegram Bot) Google Sheets - Add a Row, где мы перетаскиваем все переменные от пользователя в колонны БД. В фильте (между Router и Telegram Bot) указываем: USER_ID (A) (зеленый кубик) — Does not exist (не существует) + (Add AND rule) + {{1.command_name}} — Equal to — Регистрация.
    2. Пользователя есть в БД. Добавляем модуль Telegram Bot с содержанием (в Text) "Эй, ты уже проходил регистрацию.". Внизу окна настроек поставьте птичку напротив Show advanced settings, а в пункте Enter/Assemble the Reply Markup Field выбираем вторую строку. Далее, Keyboard — Add item x2 — Меню (в графе Text - так мы добавили кнопку на команду Меню). Не забудьте выбрать Yes в Flag if to Resize Keyboard Vertically for Optimal Fit. В фильте (между Router и Telegram Bot) указываем: USER_ID (A) (зеленый кубик) — Exists (существует) + (Add AND rule) + {{1.command_name}} — Equal to — Регистрация.
  2. Авторизация. Добавляем 1 модуль Router (кликаем 1 раз). В фильтре, между Router и Router указываем: {{1.forms[].variable}} — Equal to — authForm (название переменной формы в конструкторе).
    1. Пользователя нет в БД. Добавляем модуль Telegram Bot с содержанием (в Text) "Сначала пройди Регистрацию 👉🏻". Внизу окна настроек поставьте птичку напротив Show advanced settings, а в пункте Enter/Assemble the Reply Markup Field выбираем вторую строку. Далее, Keyboard — Add item x2 — Регистрация (в графе Text - так мы добавили кнопку на команду Регистрации). Не забудьте выбрать Yes в Flag if to Resize Keyboard Vertically for Optimal Fit. В фильте (между Router и Telegram Bot) указываем: USER_ID (A) (зеленый кубик) — Does not exist (не существует).
    2. Пользователя есть в БД. Добавляем модуль Telegram Bot с содержанием (в Text) "Привет, друг, проходи!". Внизу окна настроек поставьте птичку напротив Show advanced settings, а в пункте Enter/Assemble the Reply Markup Field выбираем вторую строку. Далее, Keyboard — Add item x2 — Меню (в графе Text - так мы добавили кнопку на команду Меню). Не забудьте выбрать Yes в Flag if to Resize Keyboard Vertically for Optimal Fit. В фильте (между Router и Telegram Bot) указываем: USER_ID (A) (зеленый кубик) — Exists (существует).


Описание триггеров Google Sheets


Триггеры в Integromat — это некий модульный функционал, например: создание таблицы или удаление листа.


Чтобы не повторяться, перечислим основные настройки:

  • Connection: Важно! Перед дальнейшей работой подключитесь к своему аккаунту Gooogle (нужно дать согласие на интеграцию)
  • Mode: режим выбора таблицы (сопоставление или ручной ввод)
    • Ручной ввод полезен, например, когда создается новая электронная таблица в сценарии, и вы хотите добавить данные в эту таблицу из сценария.
  • Spreadsheet: выбор электронной таблицы
  • Sheet: выбор определенного листа в таблице


Действия:

  • Add a Row — добавить новую строку в нижнюю часть таблицы.
  • Update a Row — обновить строку.
  • Clear a Row — очистить значение из определенной строки.
  • Delete a Row — удалить определенною строку.
  • Get a Cell — получить конкретную ячейку.
  • Update a Cell — обновить конкретную ячейку.
  • Clear a Cell — очистить конкретную ячейку.
  • Add a Sheet — добавить новый лист.
  • Create a Spreadsheet — создать новую таблицу.
  • Perform a Functional - Responder — возвращает обработанные данные в результате работы расширения Integromat в Google Sheets.
  • Delete a Sheet — удалить определенный лист.
  • Make an API Call — выполняет произвольный авторизованный вызов API.


Поиск:

  • Search Rows — возврат результата в соответствии заданным критериям.
  • Search Rows (Advanced) — возврат результата в соответствии заданным критериям (этот модуль не возвращает номер строки).
  • Get Range Value — возврат содержимого в диапазоне.
  • List Sheets — получить список всех листов из таблицы.