Содержание
- Создание телеграм-бота
- Подключение гугл-таблицы
- Заключение
- Рождение бота
- На случай, если ты запутался…
- Ringostat для руководителя и собственника бизнеса
- Собираем данные из рекламных систем в Telegram или Google Sheets
- Создаём бота с нуля и за 15 минут
- Первая часть. Инструкция по созданию.
- Вторая часть. А как это всё работает?
JavaScript * Из песочницы
Всем привет, хабравчане!
Это мой первый пост на этой площадке, целью которого является погружение в коммьюнити для обратной связи и полезных ремарок относительно этой статьи. Также буду рада, если эта статья станет полезной для начинающих свой путь в написании ботов людей 🙂
За последний год я узнала об интересном способе автоматизации бизнес-процессов, которая достигается комбинацией гугл-таблиц и телеграма. Такие задачи как учет финансов, тайм-менеджмент, пересылка событий, сообщений, уведомлений и т.п. легко решаются с помощью бесплатного инструментария гугла и телеги.
Далее речь пойдет о создании первого бота и написании скрипта в Apps Script. Поехали!
Создание телеграм-бота
Откуда вообще берутся боты в телеграме? Опытному пользователю можно пропустить это пункт, ну а новичкам настало время познакомится с @BOTFATHER
Находим отца всех ботов в поиске телеги и видим, что этот бот вообще из себя представляет.
После старта этого бота мы увидим список команд.
Здесь нам нужна команда /newbot, чтобы создать нашего первого бота.
Порядок действий незамысловатый: создаем бота помандой /newbot, даем ему вменяемое имя и задать ему username с обязательным окончанием bot. В результате получаем API токен нашего бота, который и будем дальше использовать.
Можете проверить работоспособность созданного бота перейдя по следующему URL:
https://api.telegram.org/bot2011183802:AAEW7ZNRVvlr1TG1N0DNkRB9G4FmvkBUUUU/getMe
выделенное жирным замените на апи своего бота
Запрос вернет примерно это:
{"ok":true,"result":{"id":2011183802,"is_bot":true,"first_name":"Demo for Habr","username":"DemoForHabr_bot","can_join_groups":true,"can_read_all_group_messages":false,"supports_inline_queries":false}}
Подключение гугл-таблицы
Переходим к гугл табличкам и создаем новый док.
Нам нужен пункт меню Инструменты/Tools -> Редактор скриптов/ Script editor.
Должно получиться вот это:
Затрем скрипт и напишем свой на языке JavaScript. Дополнительно в скрипте могут быть использованы инструменты гугла (классы, методы и т.п.), что мы далее и рассмотрим.
Начнем с объявления глобальных переменных. У нас их будет только две – API бота и App_link.
const API = "2011183802:AAEW7ZNRVvlr1TG1N0DNkRB9G4FmvkBUUUU"; //в кавычки впишите свой апи const App_link = ""; //значение переменной пока оставляем пустым
Напомню, что АПИ бота мы получили в диалоге с botfather.
Далее напишем функцию send, которая будет отправляет сообщение в чат с нашим ботом.
function send (msg, chat_id) { let payload = { 'method': 'sendMessage', 'chat_id': String(chat_id), 'text': msg, 'parse_mode': 'HTML' } let data = { 'method': 'post', 'payload': payload } UrlFetchApp.fetch('https://api.telegram.org/bot' + API + '/', data); }
Функция send()
отправляет запрос для общения со строними приложениями, в нашем случае – с телегой. Подробнее в документации Class UrlFetchApp.
Аргументы функции – текст отправляемого сообщения и ид чата, в которое это сообщение отправляется.
Далее нужно предусмотреть механизм запуска функции send()
. Осуществим это из тела другой функции doPost():
function doPost(e) { let update = JSON.parse(e.postData.contents); //нам нужен только тип "сообщение" if (update.hasOwnProperty('message')) { let msg = update.message; let chat_id = msg.chat.id; let text = msg.text; let user = msg.from.username; if (text == "/hello") { send("Hello World", chat_id) } } }
Это стандартная функция при работе с телеграм ботами, в которую зашиваются ответные действия от бота при отправке сообщения в чат с ним.
Здесь мы сравниваем текст полученного ботом сообщения с текстом “/hello” и вызываем функцию send()
при совпадении. Это все действия нашего бота.
Сначала сохраним скрипт и задеплоим проект. Кликаем на кнопку 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="+App_link); }
Функция принимает обе глобальные переменные API и App_link, так что убедитесь, что они у вас есть и их значения установлены корректно.
Снова сохраняем код и запускаем только функцию api_connector:
Если функция выполнилась без ошибок, идем проверять работу нашего бота непосредственно в телеге.
Сообщение “/hello” успешно распознано, на что наш бот ответил “Hello world”.
Скрипт целиком ниже:
const API = "2011183802:AAEW7ZNRVvlr1TG1N0DNkRB9G4FmvkBUUUU"; //в кавычки впишите свой апи const App_link = "https://script.google.com/macros/s/AKfycbyS0k0r1VF0T1O1y8b_oElTXWzWNJKUiQDXS2HWdZT9q-ODieKgLoNXGQTtRoi6a8fo/exec"; //после каждого деплоя обновляем значение переменной function send (msg, chat_id) { let payload = { 'method': 'sendMessage', 'chat_id': String(chat_id), 'text': msg, 'parse_mode': 'HTML' } let data = { "method": "post", "payload": payload } UrlFetchApp.fetch('https://api.telegram.org/bot' + API + '/', data); } function doPost(e) { let update = JSON.parse(e.postData.contents); //нам нужен только тип "сообщение" if (update.hasOwnProperty('message')) { let msg = update.message; let chat_id = msg.chat.id; let text = msg.text; let user = msg.from.username; if (text == "/hello") { send("Hello World", chat_id) } } } function api_connector () { UrlFetchApp.fetch("https://api.telegram.org/bot"+API+"/setWebHook?url="+App_link); }
Заключение
Мы создали простейшего бота для демонстрации работы гугл скриптов в связке с телеграмом.
Если тема интересна, с удовольствием подготовлю материал по написанию более сложных функций и/или более полезных с точки зрения бизнеса и автоматизации
Буду рада обратной связи.
Вставляем туда следующий код: function doPost(e) { var update = JSON.parse(e.postData.contents); var DOC = SpreadsheetApp.openById(“1WvGYnynJkX2srI1G1DD-7b8Qrm2WiWR6QOxzDJRKxXM”); //нам нужен только тип “сообщение” if (update.hasOwnProperty(‘message’)) { var msg = update.message; var chat_id = msg.chat.id; var text = msg.text; var msg_array = msg.text.split(” “); var date = (msg.date/86400)+25569.125; var user = msg.from.username; if (msg_array[0] == “/hello”) { send(“Hello World”, chat_id) } } } function send (msg, chat_id) { //Отправляет сообщения в тлг. На вход функции дать сообщение и ID чата, в который нужно провести отправку var payload = { ‘method’: ‘sendMessage’, ‘chat_id’: String(chat_id), ‘text’: msg, ‘parse_mode’: ‘HTML’ } var data = { “method”: “post”, “payload”: payload } var API_TOKEN = ‘1240599492:AAEOpj-G4C0hO3DFGuQ7RkMyX65RxsGFCqo’ UrlFetchApp.fetch(‘https://api.telegram.org/bot’ + API_TOKEN + ‘/’, data); } Выделенное жирным: 1 – ID гугл таблицы, находится после /d/ :
2 – АПИ токен гугл бота, который мы доставали выше. По коду – в нем две функции – первая принимает сообщение от бота и работает с единственной командой “/hello”. Вторая – отправляет сообщения в чат. В данном случае – в чат из которого пришло сообщение. Осталась последняя часть – зарегистрировать вебхук. Тут нам поможет эта ссылка: https://api.telegram.org/bot{API_TOKEN}/setWebHook?url={CURRENT_WEB_APP_URL} Вместо первых фигурных скобок вставляем всё тот же токен бота, а вместо вторых фигурных скобок нам нужно вставить ссылку на приложение, которые мы только что сделали, но еще не опубликовали.
В итоге у нас должно получиться следующее: https://api.telegram.org/bot1240599492:AAEOpj-G4C0hO3DFGuQ7R… Эту ссылку мы просто вставляем в браузер и переходим по ней. Если не получается – подрубаем ВПН. Получаем следующее:
Вебхук зарегистрирован, всё ок. Пойдем тестить бота.
Эмоции
Рождение бота
Теперь, когда у вас есть понимание, как работают веб-хуки, мы можем создать бота!
Пропуск
Во-первых, нам нужен пропуск. В некоммерческих приложениях может потребоваться запросить у разработчика напрямую, но, к счастью, есть очень простой способ получить ключи входа (или токены) авторизации в Telegram. Ключи нам даст BotFather!
- Кликните по ссылке.
- Поздоровайтесь с ним (надо отдать должное).
- Отправьте придуманное вами имя бота.
- БАМ! Токен у вас в руках! 😃
Настройка таблицы Google
Как только у нас будет токен, создайте электронную таблицу Google и перейдите в меню Инструменты > Редактор сценариев
. Именно здесь мы будем писать код.
Строим загрузочный док
Нам нужен URL приложения, чтобы получать данные из Telegram. К счастью, у Google очень простая публикация веб-приложений через редактор сценариев. Когда мы опубликуем скрипт, то получим уникальный адрес веб-приложения. Нажимайте Publish в редакторе скриптов Google Spreadsheet. Пожалуйста, обратите внимание на варианты на изображении ниже. Каждый раз, когда вы публикуете свою работу, выбран должен быть вариант новое, ваша личная электронная почта и любой, даже аноним должен иметь доступ к приложению.
И теперь у нас есть адрес веб-приложения! 😃
Сохраните все ссылки в переменных
Теперь, когда у нас есть пропуск и загрузочный док, давайте создадим веб-хук — наш крючок. Согласно документации Telegram API, все запросы к API (App Programming Interface) должны быть такими: https://api.telegram.org/bot/METHOD_NAME
. Похоже, нам будет очень часто нужна эта ссылка. Давайте сохраним все нужные ссылки в переменных, чтобы мы могли легко писать их позже:
var token = "1379225052:AAHXeY6p816laT1nrVLU-qX3ufMXcymqyoM"; var telegramUrl = "https://api.telegram.org/bot" + token; var webAppUrl = "https://script.google.com/macros/s/AKfycbyGlsL9W7VG413SHoJ6LSNxs_uW8ZtbLY7h0hk9oOruxmZlizg/exec";
Настройка веб-хука
Чтобы настроить хук, давайте напишем функцию, которая позволит нам извлекать данные из Telegram с помощью токена от Botfather. Эти данные должны быть отправлены непосредственно на адрес нашего веб-приложения. Вы можете скопировать и вставить код ниже и нажать кнопку Опубликовать, когда закончите.
function setWebhook() { var url = telegramUrl + "/setWebhook?url=" + webAppUrl; var response = UrlFetchApp.fetch(url); }
Когда вы публикуете (или развёртываете) свой код, вам могут предложить авторизовать свое собственное приложение для доступа к вашим данным в Google:
Авторизуйте приложение: жизнь слишком коротка, чтобы прожить её в безопасности:
Настройка обмена сообщениями
Есть две вещи, которые наш бот должен знать, прежде чем сможет отправить кому-то сообщение:
- Кому сообщение? Идентификатор чата.
- Что напишем? Текст сообщения.
Запишем эти требования как параметры функции. Не стесняйтесь копировать и вставлять код:
function sendMessage(chat_id, text) { var url = telegramUrl + "/sendMessage?chat_id=" + chat_id + "&text="+ text; var response = UrlFetchApp.fetch(url); Logger.log(response.getContentText()); }
Настройка запроса POST
По словам разработчиков Telegram, все запросы к API должны идти по HTTPS. Они также упомянули, что поддерживают только запросы GET
и POST
. GET
означает, что кто-то пытается получить данные. POST означает, что кто-то пытается их отправить. Это единственная концепция в учебнике, которую я ещё не освоила, поэтому я перестану притворяться, что знаю, о чем говорю, и просто покажу вам эту статью, которая помогла мне лучше понять принцип.
В любом случае, важно знать, что вы должны написать функцию, которая может отправлять POST
-запрос в Telegram, чтобы вы могли отправлять сообщение каждый раз, когда человек общается с вашим ботом. Не стесняйтесь копировать и вставлять этот код. Я объясню, что он делает, в ближайшее время:
function doPost(e) { var contents = JSON.parse(e.postData.contents); var chat_id = contents.message.from.id; var text = "Beep boop bop, message received."; sendMessage(chat_id,text) }
Нам нужна эта функция, потому что она — наш способ отправки данных в Telegram и сам Google требует, чтобы его пользователи сценариев приложений — то есть мы — включали либо функцию doGet
, либо doPost
, когда публикуем веб-приложение. Вот документация об этом. В этом документе Google объясняет, что означает аргумент (e
) в функции. Он представляет собой данные из события, созданного человеком внутри приложения, к которому подключен наш веб-хук. В нашем случае аргумент e
содержит все данные, генерируемые всякий раз, когда человек отправляет сообщение Telegram-боту. И именно в аргументе мы получим идентификатор чата пользователя. В конце концов, все предыдущие бредни оправдались 😃 (может быть).
Итак, вот история нашего бота:
- Когда пользователь общается с нашим ботом Telegram, происходит событие. Оно генерирует данные, получаемые нами из
e
. - Веб-хук автоматически отправляет
e
на URL-адрес веб-приложения. - Как только e попадёт в URL-адрес веб-приложения, оно захочет отправить запрос
POST
в Telegram. Он запросит Telegram об отправке сообщения пользователю. - Однако он не может отправить запрос с неполными требованиями. Нам нужен идентификатор чата человека и сообщение, которое мы хотим отправить в Telegram. Функция
doPost
переносит сообщение внутри переменнойtext
. doPost
также обрабатывает идентификаторchat
, но сначала ей нужно проанализироватьe
, чтобы найти его.- После обнаружения она передаёт параметры в Telegram с помощью функции
sendMessage
. Всё: сообщение передаётся пользователю. Запрос завершен. И вот — работающий бот:
На случай, если ты запутался…
Весь код:
var token = "1379225052:AAHXeY6p816laT1nrVLU-qX3ufMXcymqyoM"; var telegramUrl = "https://api.telegram.org/bot" + token; var webAppUrl = "https://script.google.com/macros/s/AKfycbyGlsL9W7VG413SHoJ6LSNxs_uW8ZtbLY7h0hk9oOruxmZlizg/exec"; function setWebhook() { var url = telegramUrl + "/setWebhook?url=" + webAppUrl; var response = UrlFetchApp.fetch(url); } function sendMessage(chat_id, text) { var url = telegramUrl + "/sendMessage?chat_id=" + chat_id + "&text="+ text; var response = UrlFetchApp.fetch(url); Logger.log(response.getContentText()); } function doPost(e) { var contents = JSON.parse(e.postData.contents); var chat_id = contents.message.from.id; var text = "Beep boop bop, message received."; sendMessage(chat_id,text) }
Перевод статьи: Mars Escobin: Seven Easy Steps to Create a Telegram Bot Using Webhooks1490
Будущее наступило: в рабочем чате отдела маркетинга одновременно находятся люди и боты 🙂 У каждого ― собственные задачи. Например, бот Wall-e помогает маркетологам Ringostat следить за важными показателями ― каждый день по расписанию присылает в чат скриншот дашборда с данными из Google Analytics и CRM. Рассказываем, как создать и настроить бота-помощника, который возьмет на себя часть рабочей рутины.
Время чтения 10 минут
Вы можете перейти сразу к интересующему разделу:
Многие отделы маркетинга и продаж ежедневно отслеживают ключевые показатели работы: количество посещений сайта, лидов, звонков, сделок. Например, маркетологи Ringostat создали дашборд, куда в режиме реального времени подтягиваются сведения из Google Analytics и CRM. Так нам не приходится собирать данные из разных систем вручную ― это происходит автоматически.
О том, как настроить дашборд мы написали в статье «Дашборд для отдела маркетинга: описание настройки и шаблон».
Но оставался еще один вопрос ― как настроить регулярную рассылку дашборда, чтобы всегда держать важные показатели под рукой? Раньше руководителю приходилось каждый день заходить в документ, делать скрин экрана и пересылать в группу.
Но теперь эта задача поручена боту. Каждое утро сотрудники отдела маркетинга Ringostat получают о него скриншот дашборда со свежими показателями сайта и блога.
Как работает бот:
- берет заданный диапазон из Google Таблицы;
- превращает в картинку формата JPG или PDF-документ;
- в определенные дни недели и часы отправляет изображение в Telegram ― лично пользователю или в групповой чат.
Боту можно поручить сбор и отправку данных из самых разных документов в Google Таблицах, например:
- для отделов маркетинга и продаж ― отчетов по трафику, лидам, звонкам, сделкам;
- для руководителя ― ежедневного плана задач от каждого менеджера и отчетов о выполненной работе;
- для менеджера ― выполнение метрик, ежемесячной «выписки» о зарплате.
Чтобы запустить такого бота, не обязательно быть программистом. Можно воспользоваться готовым скриптом, который разработан админами группы «Google Таблицы». Подробную инструкцию по настройке и запуску бота можно найти в посте или прочитать ниже.
Ringostat для руководителя и собственника бизнеса
- Получите больше заказов при том же затратах — отчеты покажут, какая реклама работает, а какая нет, это позволит перераспределить бюджет.
- Узнайте, как окупаются вложения в продвижение — Ringostat автоматически рассчитает это по каждой запущенной активности.
- Поймите, где теряются деньги: в маркетинге или отделе продаж — вы узнаете, если реклама не приводит лидов или продажники упускают покупателей.
- Оценивайте работу подрядчика по продвижению или штатного маркетолога — с точки зрения звонков и прибыльности рекламы.
Узнать подробнее
Самый первый этап ― создание собственного бота.
- Заходим в Telegram и находим пользователя @BotFather ― главного бота, который служит для создания, изменения и управления остальными.
- Запускаем главного бота командой /start.
- BotFather покажет список всех доступных команд. Выберите команду /newbot.
- Придумайте имя и username для бота. Username должен заканчиваться на _bot. Если имя или название уже занято ― BotFather попросит придумать другое.
- Затем BotFather пришлет вам токен бота ― цепочку из букв и цифр. Сохраните его ― он нужен вам для дальнейших настроек.
Бот может отправлять изображения из таблиц:
- лично пользователю;
- в групповой чат.
Но для этого он должен «знать» chat_id ― цифровой аналог персонального ника или названия группы. Получить эти данные поможет другой бот ― @myidbot. Найдите и запустите его командой /start.
- Если вам нужен собственный chat_id, напишите боту @myidbot команду /getid@myidbot.
- Если вам нужен chat_id другого пользователя, перешлите боту @myidbot любое сообщение от этого пользователя.
- Если вам нужен chat_id группы, в которую ваш бот будет слать данные из таблиц, порядок действий такой:
- добавьте бота @myidbot в состав группы;
- в группе задайте команду /getgroupid@myidbot;
- в ответ получите chat_id группы;
- можете удалить бота из группы.
ВАЖНО. Иногда chat_id содержит знак «-» вначале. Этот минус нужно копировать вместе с цифрами.
Готовый скрипт для запуска бота-отправлятора содержится в таблице. Скопируйте ее через «Файл» ― «Создать копию» и уже в собственном документе можете приступать к настройкам бота.
- Столбец А: укажите адрес Google Таблицы, из которой ваш бот будет брать данные для пересылки в Telegram.
- Столбец B: задайте лист и диапазон, который бот должен захватить в скриншот. Например: Лист1 | A1:A10.
- Столбец С: перечислите через запятую все chat_id, на которые бот должен отправлять указанные вами выше данные из Google Таблицы.
- Столбец D: напишите сопроводительный текст, которым бот будет дополнять каждое сообщение. Например: «Маркетологи, это наши результаты на сегодня» или «Григорий, это ваша зарплата».
- Столбцы Е и F: задайте дни недели и часы, в которые бот должен слать пользователям данные из Google Таблицы. Например, если получать сообщение нужно дважды в день в рабочие дни, в столбце Е укажите дни 1;2;3;4;5, а в столбце ― часы 9;18.
- Столбец G: укажите желаемый формат изображений ― JPG или PDF. Картинку в формате JPG намного удобнее открывать прямо в чате Telegram, но изображение сжимается и становится «мыльным». Если исходный документ содержит много цифр или текста мелким шрифтом ― прочесть его сложно. Картинку PDF придется скачивать и открывать через стороннее приложение, зато изображение останется четким.
- Столбцы H и I: заполняются автоматически. Первый столбец содержит дату и время последней отправки, второй ― показывает отчет о возникших проблемах.
- Столбец K: внесите токен вашего бота, который получили от BotFathe.
ВАЖНО: если ячейка содержит несколько разных данных, например, несколько chat_id, дней недели, часов ― удалите между ними пробелы. Данные должны быть разделены между собой только знаками ― запятой или точкой с запятой. В противном случае бот не сработает.
- В документе со скриптом заходите в «Инструменты» ― «Редактор скриптов».
- На левой боковой панели нажмите значок таймера ― «Настройки триггера».
- Перед нами откроется окно с настройками:
- название функции: main;
- развертывание: основное развертывание;
- источник мероприятия: триггер по времени;
- тип триггера: по часам;
- промежуток времени: раз в час;
- уведомления про ошибки: каждый день.
Этот триггер подходит для регулярной отправки данных ― согласно указанных вами дней недели и часов. Скрипт будет запускаться только тогда, когда будет срабатывать триггер. А точные дни и часы для отправки он будет искать в столбцах Е и F.
Для сравнения: раньше мы писали про другого бота, который отправляет в Telegram-чат новости о новых продажах. Для него назначен триггер «Из таблицы» и «При изменении» ― он срабатывает после передачи в таблицу из CRM данных о новой продаже.
Можете прочесть этот материал ― «Создаем чат-бот в Telegram для отдела продаж».
Бот вежливый ― первым писать не станет 🙂
- Если бот должен передавать данные лично пользователю, нужно сначала найти и запустить бота ― нажать команду /start.
- Если бот должен слать данные в группу, нужно добавить его в число участников. Дополнительные команды не нужны.
Осталось проверить, как работает наш бот. Обратите внимание на пункт «Меню скриптов» в вашем документе.
Тут есть три задачи:
- запустить отправлятор один раз ― для проверки;
- настроить триггер для постоянной отправки ― мы уже это сделали;
- удалить триггер.
Сразу после тестового запуска вы увидите, что столбцы H и I автоматически заполняются данными о последней отправке. Содержимое ячеек будет обновляться после каждого последующего запуска скрипта.
Если бот ничего не прислал, вот список возможных ошибок.
- Бот не запущен пользователем или не добавлен в число участников группы.
- Несовпадение часовых поясов в настройках скрипта и ваших документах. Проверить часовой пояс в Google Таблицах можно через «Файл» ― «Настройки таблицы», а в скрипте ― «Редактор скриптов» ― «Файл» ― «Свойства проекта». Они должны совпадать.
- Пробелы в столбцах С, Е, F. Данные могут быть разделены между собой только знаками.
Если у вас возникнут другие вопросы или сложности, можете задать их в Telegram-чате группы «Google Таблицы».
- Бот-отправлятор поможет вам автоматизировать рутинные процессы, связанные с пересылкой скриншотов из Google Таблиц в чаты Telegram.
- Создайте бота при помощи @BotFather. Дайте ему имя и название, которое заканчивается на _bot. Скопируйте токен.
- При помощи @myidbot получите персональные или групповые chat_id, куда бот будет слать данные.
- Скопируйте таблицу со скриптом. Укажите адрес таблицы, из которой бот будет брать данные, адресатов, дни и часы доставки, сопроводительный текст, а также токен бота.
- Назначьте триггер ― правило, по которому будет срабатывать скрипт.
- Запустите бота командой /start или добавьте в группу.
- Протестируйте работу бота.
- Пользоваться скриптом можно бесплатно. Если бот пригодится вам в коммерческих целях ― поддержите разработчиков.
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN” “http://www.w3.org/TR/REC-html40/loose.dtd”> <?xml encoding=”utf-8″ <html>
За 3 года таблица эволюционировала и обзавелась телеграмм ботом.
Сразу хочу сказать, что мой бот писался исключительно для себя и его настройка и запуск может показаться очень недружелюбной.
- делать рассылку в указанное время о бюджете на день
- записывать в таблицу ваши траты (просто пришлите боту число или выражение)
- команда /info показывает текущую информацию
Таблица находится тут. Для того чтобы начать ей пользоваться просто скопируйте ее себе.
Внешний вид таблицы.
Далее заходим в редактор скриптов (Меню -> Инструменты -> Редактор скриптов)
Далее копируем сюда текст с листа “Код” и сохраняем.
Пришло время завести бота в телеграме.
Копируем полученный токен
На странице редактора скриптов публикуем бота и предоставляем ему разрещения (Публикация -> Развернуть как веб приложение).
Там же берем ссылку на нашего бота
Вставляем ее в проект
Выбираем функцию setWebHook и запускаем ее (треугольником =) )
Запускаем бота в телеграме. При первом запуске копируем номер который нам прислал бот.
Вставляем в проект (находим по комментарию в коде)
Заново публикуем проект. Важно выбрать версию проекта “Новый”
Далее установим “утреннее оповещение” (Правка -> Триггеры текущего проекта). Функция sendNotify.
Собираем данные из рекламных систем в Telegram или Google Sheets
Мастер-класс по настройке онлайн-коннектора приложений, который позволит ускорить рутинные операции и лучше контролировать вашу рекламу.
Маркетологи активно используют различные рекламные системы, сбор данных из которых может превратиться в настоящую головную боль. К счастью, существуют простые методы автоматизации, позволяющие избавиться от рутинных задач.
Представьте, сколько времени освободится, если автоматизировать сбор статистики из разных источников, составление прогнозов основных показателей и отслеживание текущего баланса.
На самом деле очень просто сделать так, чтобы все детали ваших рекламных кампаний сами «прилетали» к вам, собираясь в одном удобном для вас месте. Например, в Telegram или Google Sheets.
Вместо того чтобы тратить время на посещение всех используемых вами рекламных систем по отдельности, рискуя при этом допустить ошибку, достаточно один раз настроить автоматизацию этого процесса. И для этого не нужно обладать никакими специальными знаниями или прибегать к услугам программистов. Всё что потребуется — воспользоваться сервисом ApiX-Drive. Это онлайн-коннектор приложений, созданный специально для того, чтобы объединять разнообразные системы и сервисы, в результате чего они получают возможность обмениваться данными.
Что вы получите, автоматизировав передачу данных из рекламных систем
Прежде всего, упрощается составление статистики и отчётов — все данные собираются в одном, удобном для вас месте, вроде Гугл Таблиц, где вы сможете заняться их дальнейшей обработкой и анализом. Настройка автоматизации достаточно гибкая и подгружать можно самые разные данные: как текущие показатели, так и прогнозные, в том числе и по расходам.
Можно настроить передачу данных в удобном для вас формате, выбирая только нужные показатели, например, в разрезе кампаний, групп или объявлений. Система ApiX-Drive отличается достаточной гибкостью и позволяет не только передавать данные, но и обрабатывать их, например, переводя в требуемую валюту по актуальному курсу или округляя их.
Пример сбора сводной статистики по источникам в Google Sheets
А отправка текущего баланса, например, в Телеграм, означает, что вы всегда будете держать руку на пульсе ваших рекламных кампаний. И ситуация, когда одна из них остановилась по причине того, что вы просто забыли пополнить счёт, исключается по определению.
Получение информации о текущем балансе в Telegram
Передаём данные из Google Ads в Telegram
Давайте рассмотрим пример настройки автоматизации на одном из множества возможных примеров — обеспечим передачу данных из Google Ads в Telegram.
Для начала нужно зайти в личный кабинет в ApiX-Drive и создать связь, нажав на соответствующую кнопку.
Затем указываем Google Ads в качестве системы-источника.
После чего выбираем требуемое действие. Если выбрать «Загрузить статистику по аккаунту (по дням)», то будет выгружаться общая статистика, разбитая по дням. Выбор же «Загрузить статистику по аккаунту (линейный прогноз)» означает, что вы будете получать общую статистику по выбранному аккаунту, причём кроме текущих показателей будут подгружаться также и прогнозные данные на месяц.
Потребуется подключить необходимый аккаунт, предоставив системе все разрешения для работы с ним.
После того как вы подключите Google Ads и выберете требуемый аккаунт, нужно будет указать период выборки, по которой и будет происходить загрузка данных. Затем система предложит настроить фильтры, благодаря которым появляется возможность сортировать данные. При настройке связи эту процедуру можно пропустить, вернувшись к ней позднее.
Под конец настройки источника система покажет вам, какие именно показатели будут подгружаться.
Это последний пункт в деле настройки источника. Теперь можно переходить к настройке приёмника, которая выполняется сходным образом.
Сначала выбираем систему. В нашем случае — Телеграм. Технически процедура подключения приёмника мало чем отличается от подключения источника. Выбираем систему, подключаем аккаунт и задаём требуемое действие (в нашем случае — отправка уведомлений). Если всё было настроена правильно, то под конец система покажет нам, какие именно данные будут отправляться в сообщении.
Мы описали процедуру подключения двух систем очень кратко, рассказав лишь об основных моментах, с целью показать, насколько всё просто. Но на самом деле у пользователей ApiX-Drive есть множество дополнительных настроек, значительно расширяющих их возможности.
Например, хотя источник один, приёмников может быть несколько. Так, вы сможете передавать все необходимые данные не только в Telegram, но и в другие системы, вроде тех же Google Sheets. При этом все передаваемые данные можно пересчитывать буквально на лету, используя форматирование и пересчёт при помощи математических операций.
Добавление функции конвертации валюты в уже готовую связь на основе актуального курса
Описать все возможности ApiX-Drive не позволяет формат статьи, но вы всегда сможете найти всю необходимую информацию в подробной справке.
Заключение
Подводя итог, можем вас заверить, что один раз настроив интеграцию двух систем и убедившись в том, насколько это удобно, просто и полезно, вы уже не захотите работать традиционными способами. Тем более что ApiX-Drive позволяет связывать между собой самые различные системы, число которых постоянно увеличивается. Обязательно протестируйте возможности коннектора и вы сами сможете убедиться, насколько это полезный инструмент.
Всем новым пользователям доступен бесплатный тестовый период, позволяющий оценить все возможности системы.
Создаём бота с нуля и за 15 минут
Друзья, в статье разбираем, как создать Telegram бота: что нужно сделать на стороне Telegram и что нужно сделать на стороне Google Таблиц.
Таблицу с примером и кодом найдете ниже, а ваш опыт нам не нужен — инструкция подробная и с ней справится каждый. Поехали 🙂
Мы уже четвёртый год пишем про Google Таблицы скрипты в Telegram, это наш канал, это его оглавление, а это наш чат и в него можно прийти, если будут вопросы
Первая часть. Инструкция по созданию.
Сначала создадим бота на стороне Telegram
1) заходим в Telegram, ищем пользователя t.me/BotFather
2) создаем нового бота командой /newbot
3) выбираем имя и username, username должен заканчиваться на _bot
4) копируем токен бота (на скриншоте он красным)
5) открываем нашего бота в @botfather и идём > bot settings > group privacy > turn on
В к лючение нужно, чтобы бот смог видеть всё, что происходит в чатах.
На стороне Таблиц
ВНИМАНИЕ! Если у вас не заработал бот, то проблема в этом: любое изменение кода нужно публиковать под новой версией, не просто изменить код и сохранить, а опубликовать и при этом выбрать новую версию;
1) копируете к себе на Google Диск (файл > создать копию) нашу Таблицу со скриптом
2) открываете редактор скриптов в скопированной таблице
4) настройки публикации должны быть такими (email будет ваш)
5) копируем ссылку опубликованного приложения
6) переходим в редакторе скриптов на вкладку botsettings и заполняем 2, 3 и 4 строки
7) после заполнения сохраняем код и запускаем скрипт set_webhook
Это привяжет токен бота к развернутому выше приложению.
Всё. Если все сделано правильно, то система начнет работать 🙂
Вторая часть. А как это всё работает?
В Google Таблице — скрипт, мы его разворачиваем как веб-приложение и получаем адрес этого приложения.
Дальше с помощью скрипта setWebhook привязываем токен вашего бота к этому приложению.
После этого любая активность, которую видит бот, к примеру — вы ему написали или добавили в группу, отправляется на адрес развернутого приложения.
Вот я пишу боту “какой-то текст сообщения”, и на адрес приложения приходит пришел объект такого формата:
Скрипт в Google Таблице парсит этот объект, вытаскивает имя пользователя, юзернейм, сообщение, chat_id и всё, остальное, что мы будем использовать в скрипте.
Дальше скрипт добавляет дату и вставляет после последней заполненной строки в вашу Таблицу на лист “Лог сообщений”
ли со статьей или есть что добавить?