Интеграция гугл таблицы с телеграм
Сегодня продолжение статьи о мониторинге цен с помощью гугл таблиц и создании бота в телеграм для отправки информации. В первой части мы настроили гугл-таблицы на сбор данных, а сегодня будем делать бота и программировать его (немножко).
3. Создаем нового бота в телеграм
Начинаем чат с BotFather командой " /start " и далее следуем подсказкам бота:
Отправляем команду " /newbot " и отвечаем, как мы хотим назвать наш бот и какой у него будет юзернейм. В ответ Телеграм пришлет ссылку на бота и токен для работы с ботом из других приложений. Этот токен фактически дает полные права на управление ботом, так что держите его в тайне.
Бот создан. С помощью Крестного Бота можно отредактировать его, добавив информацию, юзерпик и др. - оставлю это на ваше усмотрение :-)
Бот не может инициировать диалог, пользователь должен начать диалог сам и послать команду " /start ", а бот, получив эту команду, должен сохранить параметр chat_id , чтобы потом писать этому пользователю. Делать все это мы будем с помощью того же языка скриптов в гугл таблице. Возращаемся в нашу таблицу и запускаем редактор скриптов.
Для начала, сохраним значение токена, чтобы потом его можно было использовать. В редакторе скриптов идем в меню " Файл -> Свойства проекта "
И в закладке "Свойства скрипта" добавляем строку " OPENAPI_TOKEN " со значением токена, которое прислал Крестный Бот. Сохраняем.
В начале скрипта добавляем строки:
Создадим также новую функцию FetchMessages - она будет:
- Подключаться к серверу Телеграм по API
- Запрашивать список обновлений у бота
- Сохранять chat_id для новых пользователей
- Очищать список обновлений на сервере
Если бы мы писали этого бота, как полноценный продукт, нужно было бы проверить список chat_id на дубликаты, а также запрашивать от каждого пользователя свои ссылку (или ссылки), по которым он хочет получать оповещения. Но у нас больше образовательно-демонстрационный проект, поэтому эти моменты я пропущу.
Добавляем триггер на запрос обновлений каждый час, и можно приступать к следующей части.
Напишем еще несколько функций:
- Функция MakeChart - делает график из данных по ценам в виде картинки
- Функция SendPhoto - отправляет картинку с комментарием на указанный chat_id
- Функция SendMessage - с помощью функции MakeChart готовит картинку и для каждого chat_id с помощюу функции sendPhoto отправляет картинку в телеграм.
Добавляем вызов функции SendMessage в функцию GetPrice, чтобы она выполнялась после получения цен.
6. Тестируем
Вручную запустим функцию SendMessage - выберем ее на панели инструментов и нажмем запуск:
Это мой первый пост на этой площадке, целью которого является погружение в коммьюнити для обратной связи и полезных ремарок относительно этой статьи. Также буду рада, если эта статья станет полезной для начинающих свой путь в написании ботов людей :)
Далее речь пойдет о создании первого бота и написании скрипта в Apps Script. Поехали!
Создание телеграм-бота
Откуда вообще берутся боты в телеграме? Опытному пользователю можно пропустить это пункт, ну а новичкам настало время познакомится с @BOTFATHER
Находим отца всех ботов в поиске телеги и видим, что этот бот вообще из себя представляет.
После старта этого бота мы увидим список команд.
Здесь нам нужна команда /newbot, чтобы создать нашего первого бота.
Порядок действий незамысловатый: создаем бота помандой /newbot, даем ему вменяемое имя и задать ему username с обязательным окончанием bot. В результате получаем API токен нашего бота, который и будем дальше использовать.
Можете проверить работоспособность созданного бота перейдя по следующему URL:
выделенное жирным замените на апи своего бота
Запрос вернет примерно это:
Подключение гугл-таблицы
Переходим к гугл табличкам и создаем новый док.
Нам нужен пункт меню Инструменты/Tools -> Редактор скриптов/ Script editor.
Должно получиться вот это:
Затрем скрипт и напишем свой на языке JavaScript. Дополнительно в скрипте могут быть использованы инструменты гугла (классы, методы и т.п.), что мы далее и рассмотрим.
Начнем с объявления глобальных переменных. У нас их будет только две - API бота и App_link.
Напомню, что АПИ бота мы получили в диалоге с botfather.
Функция send() отправляет запрос для общения со строними приложениями, в нашем случае - с телегой. Подробнее в документации Class UrlFetchApp.
Далее нужно предусмотреть механизм запуска функции send() . Осуществим это из тела другой функции doPost():
Сначала сохраним скрипт и задеплоим проект. Кликаем на кнопку Deploy -> New deployment.
В результате откроется окно New deployment, где нужно кликнуть по шестеренке и выбрать Web app.
В поле Who has access выбираем Anyone, что позволит другим пользователям вносить правки в проект и деплоить без вашего участия.
И кликаем Deploy.
При первом запуске приложение попросит авторизации. Проделываем это упражнение.
Здесь нам нужен URL в самом конце. Копируем его по кнопке Copy и вставляем в качестве значения глобальной переменной App_link, значение для которой мы оставили изначально пустым.
Создадим функцию установки вебхука для получения обновлений от нашего бота.
Добавим следующий код к нашему скрипту:
function api_connector () < UrlFetchApp.fetch("https://api.telegram.org/bot"+API+"/setWebHook?url full-width ">
Если функция выполнилась без ошибок, идем проверять работу нашего бота непосредственно в телеге.
Перед началом статьи хочу сказать, что еще больше полезной и нужной информации вы найдете в нашем Telegram-канале. Канал уже очень близок к отметке в 1000 подписчиков, сможем устроить новогодний подарок? Подпишитесь, мне будет очень приятно.
Прежде всего я хочу, чтобы у вас сложилось понимание принципов работы бота. Мы коснёмся концепции веб-хуков и будем регулярно обращаться к документации API Telegram-бота.
Когда вы переводите деньги из приложения и получаете SMS для вашего провайдера — это интеграция в действии. Разработчики создают в приложениях способ получать данные друг от друга, потому что это довольно круто и это то, что хотят пользователи.
Подумайте об интеграции приложений как о рыбалке. Это похоже на попытку поймать рыбу, только на этот раз ваше приложение ловит данные. Сейчас вы можете рыбачить двумя способами: первый — вы бросаете сеть над водой и проверяете её в установленные периоды, чтобы увидеть, не поймали ли вы рыбу. Второй: вы нанизываете червя на крючок и ждете, пока не почувствуете, что движущаяся рыба тянет вас на себя.
Именно так работают API polling и webhooks. С помощью опроса API приложение проверяет другое приложение в каждый установленный период времени, чтобы увидеть, есть ли данные для извлечения, в то время как с помощью веб-хуков приложение просто ждёт передачи данных, которая начинается событием.
Есть две вещи, которые нам нужны, чтобы создать бота с веб-хуками:
Вот изображение морского порта, иллюстрирующее, как работают веб-хуки. Во-первых, кран поднимает контейнер с судна и ставит его на погрузочную площадку. Оттуда тот, кто контролирует морской порт, может снова поднять контейнер и поставить его на другое судно.
Теперь, когда у вас есть понимание, как работают веб-хуки, мы можем создать бота!
Во-первых, нам нужен пропуск. В некоммерческих приложениях может потребоваться запросить у разработчика напрямую, но, к счастью, есть очень простой способ получить ключи входа (или токены) авторизации в Telegram. Ключи нам даст BotFather!
- Кликните по ссылке.
- Поздоровайтесь с ним (надо отдать должное).
- Отправьте придуманное вами имя бота.
- БАМ! Токен у вас в руках! ?
Как только у нас будет токен, создайте электронную таблицу Google и перейдите в меню Инструменты → Редактор сценариев. Именно здесь мы будем писать код.
Нам нужен URL приложения, чтобы получать данные из Telegram. К счастью, у Google очень простая публикация веб-приложений через редактор сценариев. Когда мы опубликуем скрипт, то получим уникальный адрес веб-приложения. Нажимайте Publish в редакторе скриптов Google Spreadsheet.
Пожалуйста, обратите внимание на варианты на изображении ниже. Каждый раз, когда вы публикуете свою работу, выбран должен быть вариант новое, ваша личная электронная почта и любой, даже аноним должен иметь доступ к приложению.
И теперь у нас есть адрес веб-приложения! ?
Чтобы настроить хук, давайте напишем функцию, которая позволит нам извлекать данные из Telegram с помощью токена от Botfather. Эти данные должны быть отправлены непосредственно на адрес нашего веб-приложения. Вы можете скопировать и вставить код ниже и нажать кнопку «Опубликовать», когда закончите.
Когда вы публикуете (или развёртываете) свой код, вам могут предложить авторизовать свое собственное приложение для доступа к вашим данным в Google:
Авторизуйте приложение: жизнь слишком коротка, чтобы прожить её в безопасности:
Запишем эти требования как параметры функции. Не стесняйтесь копировать и вставлять код:
Всем ку
Комбинация из ТЛГ и ГТ, простота подключения КМК делает из ГТ офигенный инструмент автоматизации.
Тайм-менеджмент, таск-менеджмент, учёт финансов, объявления, пересылка событий - всё это создается и довольно быстро настраивается. Главное - это становится полезным не только в бизнесе, но и для обычных чатлан.
Пост ориентирован прежде всего на людей, которые только познают ГТ и на первых порах не требует знания гугл скриптов. В этом посте будет только первичная настройка и подключение. В следующих постах рассмотрю всё что описал выше (как трекать время, задачи, финансы и т.д. и как это настроить под себя).
Итак, первое что нам нужно - создать себе ТЛГ бота. Обращаемся к @BotFather
Дальше нам нужна пустая ГТ. Создаем, заходим в Инструменты / Редактор скриптов.
Скрин для английской версии.
Выделенное жирным:
1 - ID гугл таблицы, находится после /d/ :
2 - АПИ токен гугл бота, который мы доставали выше.
Важно - поставить доступ для анонимов и для каждой новой версии выставлять Project version новый или new.
При деплое оно запросит разрешение - даём, после чего получаем заветную ссылку:
Подключение бота к табличке успешно произведено.
ЗЫ Бота я удалил, так что этот АПИ-токен уже не действует.
MS, Libreoffice & Google docs
470 постов 12.8K подписчиков
Правила сообщества
2. Публиковать посты соответствующие тематике сообщества
3. Проявлять уважение к пользователям
4. Не допускается публикация постов с вопросами, ответы на которые легко найти с помощью любого поискового сайта.
По интересующим вопросам можно обратиться к автору поста схожей тематики, либо к пользователям в комментариях
Важно - сообщество призвано помочь, а не постебаться над постами авторов! Помните, не все обладают 100 процентными знаниями и навыками работы с Office. Хотя вы и можете написать, что вы знали об описываемом приёме раньше, пост неинтересный и т.п. и т.д., просьба воздержаться от подобных комментариев, вместо этого предложите способ лучше, либо дополните его своей полезной информацией и вам будут благодарны пользователи.
Утверждения вроде "пост - отстой", это оскорбление автора и будет наказываться баном.
Делал я как-то своего бота в телеге.
эх, есть идея. Запись на ноготочки в телеге. Размечаем лист с интервалами 15мин, в телеге бот выдает свободное время на 1/2 недели вперед, юзер оставляет коммент и номер телефона.
Супер, жду очень часть с финансами.
Идея такая : что бы с женой можно было вести совместную таблицу доходов и затрат.
"внутренний хомяк ликует"
Огромное спасибо за подробную инструкцию!
А возможно ли, чтобы бот автоматически отправлял записанную инфу в другой чат?
Например Заказчик отвечает в боте на вопросы. А в другой чат прилетает готовая оформленная для исполнителя заявка (Имя, Ссылка, Ответы на вопросы). Эдакая автоматизированная система приёма заявок :)
А какой язык в этом коде? Мне очень понравилось то что вы делаете, я бы хотел тоже научиться помогать своим ребятам автоматизировать процессы. С кода бот-табличка сейчас делаю реестр, чтобы менеджеры, которые пользуются такси, для офис-менеджера закидывали инфу куда и зачем (по какому проекту) они ездили. Будет поудобнее, чем она потом ходит за месяц с табличкой и заставляет всех вспоминать/объяснять.
Привет, а возможно подключить xlsx файл к телеграмм?Добрый вечер! Интересный материал, решил собрать согласно инструкции. Бот не отвечает(( Возможно я допустил ошибки. Просьба проверить скриншоты. Отправил файлы в Телеграмм.
есть нужда в боте, который будет своевременно присылать оповещение при поступлении новой инфы в гт. у нас есть гт, в которую поступает инфа : дата-время, компания, задача. нам приходится самим следить и оповещать коллег при поступлении новых заявок. хотелось бы это автоматизировать. данная инструкция подойдет для этих целей?
А если сделать запись из Телеграм бота в гугл таблицу, есть ли решения ?
тема классная!, можно ли как то настроить чтобы менеджеры записывали заявки рабочиев телеграм чате, и они отражались в одном гугл файле по порядку?? спасибо
по вашему примеру у меня все работает, магия))) а как адаптировать код, чтобы данные из чата ТЛГ от нескольких пользователей переносились, в хронологическом порядке в ГТ? так можно же?
Ну и заполнение ГТ Post-запросами очень хочется)
Сделал всё как в посте, вебхук успешно зарегистрировал, но бот никак не реагирует. В чем может быть проблема?
Уважаемый автор! Всё шикарно, всё заработало. Отличная штука.
Есть один вопрос: я меняю текст скрипта, сохраняю, но ничего не меняется у бота.
Его один раз опубликовал и всё ?
Спасибо.
Где можно научится этому всему?
так сфера применения какая? где мне это пригодится ?
объясните, почему таблицу называют табличкой?
Skoda запретила своим автосалонам в РФ навязывать «допы» покупателям
Компания разослала своим дилерским центрам в России служебное письмо, в котором предупредила об ответственности за навязывание платных аксессуаров клиентам.
ДТП в Красноярске
Видео взято с городского публика ЧП Красноярск. Такое шикарное видео должны увидеть все!
Как устроена жизнь на Севере?
Творчество
Почему на нашем телевидении разрешено рекламировать кредиты в 5,9% годовых, которые являются откровенным враньем?
Давайте в качестве реального примера рассмотрим историю, (как бы) произошедшую с… с вами, если бы вы, насмотревшись по телеку на сытого Гармаша, решились соблазниться на рекламируемый артистом кредит под 5,9% в том самом Почта Банке. Итак, вы созрели попробовать и оформили заявку на сайте. Вскоре пришло СМС, что кредит предодобрен. Минут через 30 вам позвонили и попросили приехать. На вопрос о процентной ставке ответили, что конкретную ставку могут сказать только в офисе, после отправки запроса. Приехали вы (россиянин или россиянка, страждущие дешевого кредита), в офис Почта Банка, вам оформили заявку и попросили подождать одобрения минут пятнадцать. Вскоре пришло одобрение под 9,9% (уже не 5,9%, но это только начало).
Вы выбрали кредит с финансовой защитой (без нее процентная ставка возрастает на 7%), ее включили в тело кредита и поэтому при первоначальном вашем желании взять в кредит 250000 рублей, в теле кредита оказалось уже 395 000! Вот так… 145 000 рублей – это страховка! Сразу, с насчитанными на нее процентами. Ладно, допустим, вы понимали, что все пойдет не так гладко, как обещал Гармаш, допустим, что вы были готовы взять кредит со ставкой до 10%, пусть так… потянет.
Истина одна – ни в одном российском банке невозможно взять кредит со ставкой в 5,9% годовых. Это и дураку понятно, не понятно другое – почему на нашем телевидении открыто разрешено рекламировать кредитные условия, которые являются откровенным и бессовестным враньем?
Очевидно, что тот, кого уволили
Тот кто продвигает законопроект о запрете называть национальности
Извиняюсь, если уже где-то фигурировало. А что мы знаем о депутате Хамзаеве Султане Султановиче? Этот который является автором инициативы о том, чтоб запретить СМИ указывать национальность преступников. Наткнулся я тут на видео о том как он ведет дебаты. С таким поведением и манерой общения он самая яркая антиреклама своих законопроектов. Можете зайти на ютуб и набрав в поиске его фамилию посмотреть и другие эпизоды. Да и это видео не влезло целиком (Пикабу ограничил меня 3 минутами).
Там наверху правда считают что такой "персонаж" имеет право диктовать нормы по которым должно жить общество?
Как стать учителем ОБЖ?
Мой старший сын в школе спросил учителя ОБЖ: "А как стать учителем ОБЖ?"
Учитель ответил: " Это непросто. Для этого надо много раз свернуть не туда".
Вот так с самоиронией и филосовской ноткой учитель донес до класса, что работа так себе.
Обида на всю жизнь)))
Год 97-98, отдаленный серверный город, 3500 км от Москвы. Мне 11 лет , и есть цель всей жизни, во что бы то не стало , купить себе консоль Sega..Т.к отец был ,мягко сказано, не в восторге от моего увлечения геймингом, рассчитывать на помощь со стороны родителей ,было бессмысленно . Целый год я экономил на всем чём только можно, собирали бутылки, медь, алюминий. Разбивали старые аккумуляторы, и плавили грузила в ложке ( рыболовная снасть)- за все это, получали какие-то деньги, всё шло на мечту.
И вот учебный год окончен, сумма почти собрана, нехватало каких-то копеек. Я говорю матери, так мол и так , вот деньги надо чуть добавить хочу себе Sega.
На что мне ответили, я еду через неделю с твоей сестрой в Москву, зачем покупать тут с наценкой, там в разы дешевле будет, хз сколько но дешевле ,там куплю и привезу. Ну ок, на деньги.
Приезжает мать, я весь трясусь от предвкушения что наконец сбылась моя мечта, даже взял у друга пару картриджей. Звходит мама с отцом и сестрой, ой как ты загорел и вырос блаблабла, поцелуйчки. Я говорю гдеее моя консоль?
Ой мне было тяжко тащить она огронмая, я отправила ее по почте, через неделю придёт, но отправила ее на адрес бабушки, уведомление туда придёт.
Я блэт целый месяц бегал к бабке в подъезд, ждал почтальона , и спрашивал, нету ли чего в КВ 187? Каждое утро я вставал в 7 и бежал 4 км до дома бабки. На вопрос к матери, что что-то пошло не так, она ответила - ну возможно посылка потерялась, такое бывает. Я пошёл на почту и реально орал на них, где моя посылка падлы? Отдайте. На что был послан.
Читайте также: