Чат с прогнозом погоды и триггеры в гугл таблицах (GS6)
Глобально задача в следующем:
1 - забрать с какого-нибудь сайта прогноз погоды
2 - подключить бота и привязать его к таблице
3 - настроить триггер для отправки.
Посмотрев несколько сайтов с погодой - выбор пал на Яндекс, ввиду удобной структуры сайта.
Отсюда я забрал прогноз:
Подробнее о том как спарсить данные с сайта в таблицу в этом посте: Парсинг данных с сайтов в гугл таблички (GS1)
Тут приведу только формулу:
=IMPORTHTML("https://yandex.ru/pogoda/ufa/details?via=mf#26","table",1)
Теперь подключаем бота. Как это сделать - читай тут: Подключение телеграм бота к гугл табличкам (GS3)
Если ранее мы использовали chat_id - чат с самим ботом, то сейчас мы будем использовать ид чата/ группы в телеграме, в который бот был добавлен.
Для этого нам необходимо сохранять ид чата отдельно в таблице и обращаться к этому значению как к значению переменной chat_id.
Соответственно, нам нужна функция, которая будет это делать:
function link(chat_id) {
//записывает ид чата в таблицу
DOC.getSheetByName("Settings").getRange(2,1).setValue(chat_id);
Demo.send("ID записан", chat_id, API_TOKEN);
}
Важно! В строке Demo.send я вызываю функцию send, которая уже рассматривалась в посте про создание бота. Demo в данном контексте - это название библиотеки, также подробнее про библиотеки можно почитать в соответствующем посте.
Вызывать ее мы будем из тела функции doPost(e) при условии, что боту отправлена команда /link. В коде это выглядит вот так:
Теперь соберем все вместе и сформируем сообщение для отправки в чат.
Глобальные переменные:
API_TOKEN - токен бота
DOC - ссылка на вашу гугл таблицу
DATA - лист гугл таблицы, содержащий прогноз погоды
SETTINGS - лист гугл таблицы, содержащий значение chat_id
App_link - URL веб приложения
Все, что в кавычках, должно быть изменено на ваши значения.
Функция для подключения веб хука:
Функция link(chat_id) для запоминания id чата
Функция daily() для формирования и отправки прогноза в чат:
На данный момент функция daily() не вызывается другой функцией или командой типа /link или /hello.
Мы добавим триггер, который будет вызывать функцию автоматически каждое утро.
Переходим на вкладку Triggers
Добавляем новый триггер
В окне задаем необходимые параметры.
Во-первых, функцию. Фукция, которая вызывается по триггеру, - daily().
Event source - по времени (Time-driven)
Type of time based trigger - Day timer (раз в день)
Time of day - в какое время триггер должен сработать
Сохраняем.
Результат работы скрипта ниже.
Дополнительно: триггеры на то и триггеры, что работают автономно (без участия пользователя или разработчика, с закрытым доком или чатом. В любой ситуации сообщение будет отправлено в чат в установленное время с установленной частотой.