Универсальный скрипт для записи в Google таблицу
Сегодня мы научимся записывать данные в Google Sheets. Да, раньше этот урок был доступен только в Клубе и Лётной школе, но мы решили порадовать любимых клиентов и предложить решение для всех.
ПРЕДУПРЕЖДЕНИЕ! У Google-таблиц есть свои ограничения, по-моему 100 запросов за 100 секунд, поэтому есть огромный риск, что при большом наплыве данных данные либо не запишутся, либо будут записаны некорректно. И ограничения тут не со стороны Автопилота, поэтому логируйте данные, как я показал в видео.
Содержание урока
- Подготовка таблицы
- Развертывание скрипта
- Настройка команды в Автопилоте
- Инструкция по продаже мини-курсов
- Новая версия скрипта
Подготовка таблицы
- Создаём новую таблицу. Ссылка для быстрого создания таблицы
Чтобы скрипт знал, куда записывать данные, нам надо сообщить ему 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) Для того, чтобы передать данные заводим временную переменную %data%с нужными данными, разделенными ~~. Например, имя, фамилия, VK ID и т.д.:
%first_name%~~%last_name%~~%vk_id%~~https://vk.com/id%vk_id%
Если вы хотите добавить кликабельную ссылку на пользователя, то вот пример:
%first_name%~~%last_name%~~%vk_id%~~https://vk.com/id%vk_id%~~=HYPERLINK("https://vk.com/id%vk_id%";"%first_name% %last_name%")4) Для отправки данных в таблицу добавляем действие «Отправить GET/POST запрос» на адрес скрипта (адрес у вас будет свой) и параметрами (в примере я их передаю переменными):
Параметры запроса:
documentid - id таблицы (копируется из адресной строки таблицы как на скриншоте выше)
sheetname - название листа (По умолчанию «Лист1»)
data - данные, которые мы будем записывать, разделенные двойным знаком тильды ~~
mode - режим запроса: new, edit, delete
Если не передан, то по умолчанию NEW.
Режимы запроса mode:
new - с новой строки
edit - редактирование
delete - удаление ячейки
search - поиск текста
range - ячейка, с которой мы будем записывать. Например, a3. Используется для режимов edit и delete
deleteEntireRow (число) - 1 - удаление всей строки и 0 - удаление конкретной ячейки. (используется вместе с range).Используется для режима delete
editRow (число) - 0 - перезапись всей строки (начиная с range ) и 1 - редактирование конкретной ячейки. (используется вместе с range). Используется для режима edit
Важно! Если вы указываете editRow = 1 и в data несколько значений
%first_name%~~%last_name%~~%vk_id%~~https://vk.com/id%vk_id%
то скрипт запишет в ячейку только первое значение, т.е.
%first_name%
игнорируя остальные.
FindRow (число) - 0 - вернет адрес всей строки в которой найден искомый текст (указанный в search_text ) и 1 - вернет адрес конкретной ячейки в которой найден искомый текст (указанный в search_text). Используется для режима search
Важно! Если найденных строк будет много, то скрипт вернет только первую найденную)
Cell(число) - 0 - вернет адрес всей строки в которой найден искомый текст (указанный в search_text ) и 1 - вернет адрес конкретной ячейки в которой найден искомый текст (указанный в search_text). Используется для режима search
Для получения ответа от скрипта можно себе вывести переменную %response%, которая будет содержать в себе эти данные.
Я очень рекомендую выводить себе, как сотруднику %response%, каждый раз, когда идет работа с таблицей.
Пример %response%:
{"status":"success","message":"Данные успешно записаны в лист Январь
документа с ID
1b7xcio6_TgpQ7VKjpoNdnXW613lwizDmCZkJH0pDDws","cell":"A6","data":["Андрей","Горячих","408053834","https://vk.com/id408053834"]}Мы здесь видим status - success, что данные записаны корректно в ячейку A6. И да, я поправил скрипт, теперь он возвращает номер ячейки. Можно сохранять его в поле профиля игрока и использовать в других командах. Пример %response% сразу после отправки запроса
#ответ от гугла
Статус: %response.status%
Номер строки/ячейки: %response.cell%
Ссылка на таблицу: https://docs.google.com/spreadsheets/d/%documentid%/edit#gid=0
Важное обновление
Важное обновление. Режим поиска
Важное обновление. Режим поиска по ячейкам
Новая версия скрипта
Вот обновленная версия скрипта, которая не перетирает данные. Скачать можно тут.
Все!
Хотя нет, если вы хотите больше мудрости от меня, то можете вступить в мой клуб.
Творческих взлётов и успешного внедрения.
Вернуться к списку инструкций