Найти тему

Делаем телеграм-бота в гугл таблицах для сбора цен - часть 1

Оглавление

Привет. Сегодня у нас будет немного техническая статья, где я расскажу немного о возможностях языка Google Apps Script и как его можно использовать для сбора и анализа данных.

Ничего нет более успокаивающего, чем смотреть, как течет вода, как горит огонь, и как падает цена на желанную покупку. Хотя нет, последнее вовсе не успокаивает. Может пусть google sheets смотрит цифры, а нам отправляет результат раз при изменении? Так и поступим.

Что мы будем делать?

  • Ищем ссылку для отслеживания, создаем новую таблицу
  • Программируем сбор данных о цене
  • Создаем нового бота в телеграм
  • Програмируем отправку данных
  • Тестируем

За чем будем следить? Ну, допустим, за ценой на iPhone 12 128Gb. Я не люблю айфоны, но многие тащатся от них.

Кстати, говорят, в современных айфонах, наконец, реализовали функции, которые были в андроиде 5 лет назад! Не проверял, напишите, если это не так!

Цену будем смотреть на агрегаторе, например, на Е-Каталог (в целях демонстрации). Но это не принципиально, можете использовать другой агрегатор или какой-нибдуь конкретный магазин. Поехали?

1. Ищем ссылку, создаем таблицу

Начнем с ссылки - заходим на маркет, находим наш айфончик, переходим в карточку продукта и сортируем цены от минимальной.

Копируем ссылку и вставляем ее в новую гугл-таблицу

-2

2. Добавляем скрипт

Нам нужно добавить скрипт в таблицу. Для этого в меню "Инструменты" выбираем "Редактор скриптов"

-3

В новом окне откроется редактор скриптов для этой таблицы:

-4

Нам нужны будут две основные функции: одна для проверки текущей цены и записи результата в таблицу, вторая для отправки результатов в телеграм.

Сначала напишем функцию, которая будет извлекать цену. Посмотрим, как отображается цена на странице в исходном файле. Для этого наведем мышкой на цену и нажмем на правую кнопку и выберем меню Inspect.

-5

В появившемся окне увидем исходный код веб-страницы, в частности, где указана цена:

-6

Составляем регулярное выражение для извлечения этой части кода:

([\d]+(&nbsp;)*[\d]*)<b>&nbsp;р\.<\/b>

А теперь пишем функцию в редакторе скрипта:

-7

Эта функция при запуске проверяет сайт Е-Каталог и сохраняет самую низкую цену в таблице, с указанием времени. Попробуем запустить функцию - гугл попросит разрешение на выполнение кода:

-8

После того, как разрешение дано, в таблице с сылкой вы увидете данные:

-9

Но это не то, чего мы хотели! Нам нужно было, чтобы данные собирались автоматом. Для этого нужно создать триггер. Выбираем в меню "Изменить -> Триггеры текущего проекта"

-10

И жмем кнопку "Добавление триггера"

-11

Настраиваем как что будет являться триггером и какую функцию он будет запускать: функция - "GetPrice", которую мы написали; Источник мероприятия - "Триггер по времени", тип - "По дням" и можно указать желаемое время запуска (приблизительное - гугл для балансировки нагрузки будет запускать триггер в случайное время в промежутке).

Жмем сохранить. А теперь ждем пару дней :-) и проверяем, как сработал скрипт:

-12

Завтра мы сделаем бота и напишем функцию по отправке сообщений, а пока попробуйте использовать скрипт сами. Таблица доступна по ссылке: https://docs.google.com/spreadsheets/d/1KyAtIZlEKz5tYa_CUipbawgDomrcNY8Oblygeug5X3I/edit?usp=sharing

Чтобы редактировать, скопируйте ее в свой гугл-диск.