Универсальный скрипт для чтения данных из Google таблицы

Ранее мы уже показывали вариант записи данных в Google таблицу, а сейчас научимся считывать данные из Google Sheets. Да, этот скрипт был написан для Клуба Андрея, но решили поделиться им с вами.

ПРЕДУПРЕЖДЕНИЕ! У Google-таблиц есть свои ограничения, по-моему 100 запросов за 100 секунд, поэтому есть огромный риск, что при большом наплыве, данные либо не считаются вообще, либо будут считаны некорректно. И ограничения тут не со стороны Автопилота…
Также обращаем ваше внимание на количество запросов вебхуком. Помним про ограничения ВКонтакте не более 15-20 запросов в секунду на один ключ.
И помним про данные в ресурсах, что они не резиновые и имеют ограничение в 65 000 символов.

Содержание урока

Подготовка таблицы

  1. Создаём новую таблицу. Ссылка для быстрого создания таблицы

Чтобы скрипт знал куда записывать данные, нам надо сообщить ему 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
ID таблицы
ID таблицы

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%

Пример переменной
Пример переменной

Тестируем.

Пример работы скрипта
Пример работы скрипта

Как мы видим, все прекрасно работает.

245 views·4 shares