Привет. Сегодня у нас будет немного техническая статья, где я расскажу немного о возможностях языка Google Apps Script и как его можно использовать для сбора и анализа данных.
Ничего нет более успокаивающего, чем смотреть, как течет вода, как горит огонь, и как падает цена на желанную покупку. Хотя нет, последнее вовсе не успокаивает. Может пусть google sheets смотрит цифры, а нам отправляет результат раз при изменении? Так и поступим.
Что мы будем делать?
- Ищем ссылку для отслеживания, создаем новую таблицу
- Программируем сбор данных о цене
- Создаем нового бота в телеграм
- Програмируем отправку данных
- Тестируем
За чем будем следить? Ну, допустим, за ценой на iPhone 12 128Gb. Я не люблю айфоны, но многие тащатся от них.
Кстати, говорят, в современных айфонах, наконец, реализовали функции, которые были в андроиде 5 лет назад! Не проверял, напишите, если это не так!
Цену будем смотреть на агрегаторе, например, на Е-Каталог (в целях демонстрации). Но это не принципиально, можете использовать другой агрегатор или какой-нибдуь конкретный магазин. Поехали?
1. Ищем ссылку, создаем таблицу
Начнем с ссылки - заходим на маркет, находим наш айфончик, переходим в карточку продукта и сортируем цены от минимальной.
Копируем ссылку и вставляем ее в новую гугл-таблицу
2. Добавляем скрипт
Нам нужно добавить скрипт в таблицу. Для этого в меню "Инструменты" выбираем "Редактор скриптов"
В новом окне откроется редактор скриптов для этой таблицы:
Нам нужны будут две основные функции: одна для проверки текущей цены и записи результата в таблицу, вторая для отправки результатов в телеграм.
Сначала напишем функцию, которая будет извлекать цену. Посмотрим, как отображается цена на странице в исходном файле. Для этого наведем мышкой на цену и нажмем на правую кнопку и выберем меню Inspect.
В появившемся окне увидем исходный код веб-страницы, в частности, где указана цена:
Составляем регулярное выражение для извлечения этой части кода:
([\d]+( )*[\d]*)<b> р\.<\/b>
А теперь пишем функцию в редакторе скрипта:
Эта функция при запуске проверяет сайт Е-Каталог и сохраняет самую низкую цену в таблице, с указанием времени. Попробуем запустить функцию - гугл попросит разрешение на выполнение кода:
После того, как разрешение дано, в таблице с сылкой вы увидете данные:
Но это не то, чего мы хотели! Нам нужно было, чтобы данные собирались автоматом. Для этого нужно создать триггер. Выбираем в меню "Изменить -> Триггеры текущего проекта"
И жмем кнопку "Добавление триггера"
Настраиваем как что будет являться триггером и какую функцию он будет запускать: функция - "GetPrice", которую мы написали; Источник мероприятия - "Триггер по времени", тип - "По дням" и можно указать желаемое время запуска (приблизительное - гугл для балансировки нагрузки будет запускать триггер в случайное время в промежутке).
Жмем сохранить. А теперь ждем пару дней :-) и проверяем, как сработал скрипт:
Завтра мы сделаем бота и напишем функцию по отправке сообщений, а пока попробуйте использовать скрипт сами. Таблица доступна по ссылке: https://docs.google.com/spreadsheets/d/1KyAtIZlEKz5tYa_CUipbawgDomrcNY8Oblygeug5X3I/edit?usp=sharing
Чтобы редактировать, скопируйте ее в свой гугл-диск.