Универсальный скрипт для чтения данных из Google таблицы
Ранее мы уже показывали вариант записи данных в Google таблицу, а сейчас научимся считывать данные из Google Sheets. Да, этот скрипт был написан для Клуба Андрея, но решили поделиться им с вами.
ПРЕДУПРЕЖДЕНИЕ! У Google-таблиц есть свои ограничения, по-моему 100 запросов за 100 секунд, поэтому есть огромный риск, что при большом наплыве, данные либо не считаются вообще, либо будут считаны некорректно. И ограничения тут не со стороны Автопилота…
Также обращаем ваше внимание на количество запросов вебхуком. Помним про ограничения ВКонтакте не более 15-20 запросов в секунду на один ключ.
И помним про данные в ресурсах, что они не резиновые и имеют ограничение в 65 000 символов.
Содержание урока
- Подготовка таблицы
- Развертывание скрипта
- Настройка команды в Автопилоте
- Инструкция по продаже мини-курсов
Подготовка таблицы
- Создаём новую таблицу. Ссылка для быстрого создания таблицы
Чтобы скрипт знал куда записывать данные, нам надо сообщить ему ID таблицы и название листа в этой таблице. Их мы будем указывать в Автопилоте.
Копируем из адресной строки браузера ID нашей таблицы. В примере ниже он выделен жирным шрифтом:
https://docs.google.com/spreadsheets/d/1vUyQZgwqPdrIZEo8OiIqH-0BpPErfPVHAJ3Z5msHgj0/edit#gid=0
В примере ID таблицы:
1vUyQZgwqPdrIZEo8OiIqH-0BpPErfPVHAJ3Z5msHgj0
Название листа и оформление таблицы оставляю на ваш вкус.
Развертывание скрипта
Открываем сайт https://script.google.com/ и выбираем «Создать проект» — откроется редактор скриптов.
Очищаем поле для кода. Вставляем в него готовый скрипт. Пример скрипта был по этой ссылке.
Сохраняем скрипт через меню Файл → Сохранить, либо комбинацией клавиш Ctrl + S.
Разворачиваем скрипт, как показано выше. Сохраняем URL на который будем отсылать запросы. Его мы будем использовать в Автопилоте в действии «Отправить GET/POST запрос».
Важно! После каждого изменения скрипта надо сохранять, а также разворачивать скрипт заново и выбирать версию «Новый». Без развёртывания все изменения скрипта недоступны при вызове Автопилотом
ПРЕДУПРЕЖДЕНИЕ! У Google-таблиц есть свои ограничения, по-моему 100 запросов за 100 секунд, поэтому есть огромный риск, что при большом наплыве, данные либо не запишутся, либо будут записаны некорректно. И ограничения тут не со стороны Автопилота, поэтому логируйте данные, как я показал в видео.
Настройка команды в Автопилоте
Событие:
1) Событие «Написал сообщение» с любым текстом, нужным вам. В примере, промокод.
Действия:
1) Для того, чтобы передать ID таблицы заводим временную переменную %documentid%с идентификатором таблицы. Например:
1vUyQZgwqPdrIZEo8OiIqH-0BpPErfPVHAJ3Z5msHgj0
2) Для того, чтобы передать название заводим временную переменную %sheetname%с названием листа. Например:
Январь
3) Для того чтобы получить данные на указанный вебхук, создаем временную переменную %url%с нужной ссылкой (из события «Входящий запрос») Например, имя, фамилия, VK ID и т.д.:
https://skyauto.me/cllbck/223298908/29311043/cWd4dGVLZjIzWHJpTWQ1R2syU2JwUT0?avtp=1&sid=%vk_id%
4) Для отправки запроса данных из таблицы добавляем действие «Отправить GET/POST запрос» на адрес скрипта (адрес у вас будет свой) и параметрами (в примере я их передаю переменными):
Параметры запроса:
documentid - id таблицы (копируется из адресной строки таблицы как на скриншоте выше)
sheetname - название листа (По умолчанию «Лист1»)
range- диапазон данных для возврата (В примере: A1:A5)
url- данные будут отправлены на указанный вебхук.
vk_id- ID пользователя для которого выполнить запрос.
Опциональные параметры:
flat - 1 вернуть данные строкой
delimiter (по умолчанию запятая) - можно указать свой разделитель, для построчной записи указываем \n. Используется для режима flat
Важно! Если найденных строк будет много, то помните про ограничения в ресурсах и ВКонтакте
Для получения ответа от скрипта можно себе вывести переменную %response%, которая будет содержать в себе эти данные.
Я очень рекомендую выводить себе, как сотруднику %response%, каждый раз, когда идет работа со скриптом.
Пример %response%:
Ответ скрипта
{"success":true,"data":"{\"success\":true}"}
Мы здесь видим status - success, что данные переданы в автопилот корректно. Пример %response% с ошибкой.
{"success":false,"message":"Лист с именем \"%sheetname%\" не найден"}Опционально вы можете сохранять во временную переменную результат выполнения скрипта и информировать об этом админа.
5) Для того, чтобы сохранить результат работы скрипта (сразу после запроса) заводим временную переменную %success%со значением. Например:
%response.success%
Команда с реакцией на вебхук
Важно! Помним про ограничения в ресурсах, частоту запросов и количество данных в ресурсе
Событие:
1) Для входящего вебхука создаем событие
«Входящий запрос».
В дополнительные параметры вписываем &sid=%vk_id% , сохраняем команду и нажимаем на кнопку «скопировать». Этот адрес и вставляем в переменную %url%
Дальше данные можно получить из %request.input.data%
Тестируем.
Как мы видим, все прекрасно работает.
