Найти тему

Сбор данных с разных таблиц в одну ОНЛАЙН

Долго искал, мало что нашел, но смог реализовать!

Задача. Существует определённое количество гугл таблиц, которые заполняются онлайн, нужна единая сводная таблица из этих всех таблиц.

Проблема в том, что собрать данные с разных таблиц в одну, не так уж и сложно, НО есть как говорится свои нюансы.

Итак, расскажу как все было у меня и зачем это мне.

На нашем самом крутом турнире по силовым видам спорта SPS есть EXPO (выставка, спонсоры, локации). Для зрителей и посетителей решили сделать бесплатную лотерею.

Условия. Зрителям необходимо было просто подойти к стенду, отсканировать QR-код чат-бота, выполнить условия и зарегистрироваться в розыгрыше.

Так как условием изначально было подписаться на канал Siberian Power Show, спонсорам было предложено, чтобы на их стенде, человек подписывался не на нас, а на них. Соответсвенно, для каждого спонсора был создан и настроен чат-бот.

Ведущий на сцене каждый час, в течении 3х дней, рандомно выбирает победителей.

Механизм.

  1. Сканируешь QR-код и попадаешь в чат-бот
  2. Подписываешь на канал
  3. Вводишь своё Имя и номер телефона
  4. Нажимаешь "Участвовать"

Чтобы люди не вводили левые номера телефонов, чат-бот проверял зарегистрированных не по введённому номеру, а по id телеграмма.

Чат-бот каждого спонсора заполнял свою гугл таблицу. Далее все записи сводятся в единую таблицу и сортируются по дате и времени регистрации.

Чтобы собрать файлы в единую таблицу, необходимо указать диапазон, который надо брать из других файлов. Так как мы не знаем сколько будет зарегистрированных, количество строк я поставил 999. Проблема в том, что гугл в сводную таблицу добавляет именно 999 строк и пофигу, что они пустые. Соответственно, надо, чтобы автоматически удалялись пустые и далее сортировались по дате и времени. Получился в итоге вот такой код ячейки:

=QUERY({IMPORTRANGE("https://docs.google.com/spreadsheets/d/ПУТЬ1/edit?usp=sharing";"Розыгрыш1!A1:F999");IMPORTRANGE("https://docs.google.com/spreadsheets/d/ПУТЬ2/edit?usp=sharing";"Розыгрыш2!A1:F999")};"select * where Col1 is not null order by Col1")

Для импорта файла используем функцию IMPORTRANGE, описание её доступное и понятное. В ней мы как раз указываем нужный нам диапазон.

Дальше все сделает мощнейшая функция работы с массивом QUERY.

=QUERY("select * where Col1 is not null order by Col1")

select - перечисление полей, которые будут возвращены запросом

where - содержит перечень условий, с помощью которых будет отфильтрован массив данных, обрабатываемый запросом

order by - сортировка результатов

Чат-боты настроены с помощью площадки leadteh

Если у Вас есть вопросы - пишите :)