Как отправить Гугл таблицу в Телеграмм

Сегодня создаем Telegram бота, связанного с Google Таблицей.

Наш бот по команде от пользователя отправит ему в Telegram последний пост из оглавления нашего канала.

После того, как вы поймете, как работает код — вы сможете адаптировать его под свои нужды. Например, пишете боту в Telegram и он отправляет письмо с данными из Таблицы работнику, или начинает собирать несколько Таблиц в одну и конвертирует её в PDF, в общем — все, что вы сможете придумать 🙂

Какой у нас план:

  1. Создадим бота в Telegram и получим токен авторизации.
  2. Напишем Google Apps Script, управляющий ботом. Вставим в него токен.
  3. Развернем скрипт как веб-приложение.
  4. Зарегистрируем вебхук.
  5. Всё, будем пользоваться

Создаем нового бота в Telegram

2. Нажимаем START и выбираем /newbot

3. Придумаем имя нашему боту

4. И юзернейм (по нему бота можно будет найти). Юзернейм должен оканчиваться на bot.

5. Записываем токен API доступа к Google Васе:

Отправка сообщений из Google Таблицы в телеграмм


684873979:AAFWxHSV8QWoZUpiA9Z18EAyDHgLvrpjdkA

Наш бот создан, переходим к следующей части

Скрипт, скрипт, скрипт!

Скрипт может находиться в Таблице или в проекте, созданном в https://script.google.com/home.

Как настроить работу Телеграм-бота с Google Sheets

Разные команды в REG.RU пользуются чат-ботами в Телеграме. SEO-команда оперативно отслеживает изменения на сайте, руководители клиентских служб мониторят работу своего отдела, а сотрудники техподдержки могут посмотреть график работы на день/неделю без авторизации во внутренних сервисах, что очень удобно, если сотрудник, например, за городом.

Часто подобные боты имеют несложное устройство. Например, они могут загружать для работы из Google-таблиц список товаров с ценами и количеством, имена работников отдела с указанием времени работы/отпуска. Сегодня разберемся, как сделать такого чат-бота.

В продолжение статьи о создании Телеграм-бота расскажем, как настроить совместную работу бота и Google Sheets API v4 вместе со специалистами команды вёрстки REG.RU Анной К. и Виктором Ш.

Попробуем научиться получать данные из нашей Google-таблицы, в которой, например, указаны дни рождения наших друзей. Мы хотим, чтобы бот в ответ на имя друга подсказывал его день рождения. Начнем!

Настройка Google API

Создание проектаНастройка проекта

В меню «Учетные данные» нажимаем «Создать учетные данные»‎.

Создание учётных данных

Через сервисный аккаунт мы будем соединять бота и таблицу. Указываем название аккаунта, роли, предоставляем пользователям доступ к сервисному аккаунту, если это необходимо.

Пользователи в сервисном аккаунте

Отправка сообщений из Google таблиц в телеграм + БОНУС!!!

Заходим на сервисный аккаунт

Интерфейс сервисного аккаунта

и выбираем «Создать ключ»‎.

Создание ключа

Выбираем нужный нам формат. Мы оставим рекомендуемый json.

Выбор формата файла

После загрузки разместим json-файл в корне проекта по Телеграм-бота и переименуем, например, в credentials.json. Не забудьте указать этот файл в перечне.gitignore!

В настройках доступа Google-таблицы предоставим сервисному аккаунту права на редактирование. Для этого нужно добавить в список пользователей почту сервисного аккаунта.

Теперь напишем код для аутентификации.

Запускаем код

Для запуска используем библиотеку для работы с ботом Telegraf и сделаем так, чтобы при получении текста бот выполнял функцию saysBirthday из файла saysBirthday.js.

const Telegraf = require(‘telegraf’); const < saysBirthday >= require(‘./saysBirthday’); const bot = new Telegraf( BOT_TOKEN ); bot.start( ( ctx ) => < ctx.reply(‘Привет! Я бот по работе с гугл табличкой!’); >); bot.on( ‘text’, ( ctx ) => < saysBirthday( ctx ); >); bot.launch();

Еще по теме:  Как в Телеграмм поменять свой контакт

В файле saysBirthday.js напишем наш код и проверим:

const saysBirthday = async ( ctx ) => < ctx.reply(`Кажется, ты сказал: $`); >; module.exports = < saysBirthday, >;

Диалог с ботом прошёл успешно

Отлично, бот отзывается. Теперь научим его получать из таблицы дни рождения.

Получаем данные из таблицы

Исправим файл saysBirthday.js. Добавим в код библиотеку googleapis и функцию аутентификации Google.

const < google >= require(‘googleapis’); const < getAuthClient >= require(‘./googleAuth’);

Используя функцию getAuthClient, создадим клиента для работы с API Google Sheets.

const getApiClient = async () => < const authClient = await getAuthClient(); const < spreadsheets: apiClient >= google.sheets( < version : ‘v4’, auth : authClient, >); return apiClient; >;

Теперь получим лист нашей таблицы с днями рождения друзей.

Таблица с именами друзей

Используем метод API spreadsheets.get — укажем spreadsheetId (берем из URL таблицы с данными) и остальные необходимые параметры.

const getValuesData = async ( apiClient, range ) => < const < data >= await apiClient.get( < spreadsheetId : ‘1Dj9iugewBOFMeGDb-AIKK26LUHTK0SPjumZpQXhlPPg’, ranges : range, fields : ‘sheets’, includeGridData : true, >); return data.sheets; >;

Теперь получим эти данные из функции saysBirthday, которую бот выполняет при вводе любого текста. В качестве второго аргумента «range»‎ передаем название листа Google-таблицы «Дни рождения»‎.

const saysBirthday = async ( ctx ) => < const range = ‘Дни рождения’; const apiClient = await getApiClient(); const [sheet] = await getValuesData( apiClient, range ); console.log( sheet ); >;

Запустим и проверим, какие данные появились в консоли:

Можно проверить, что за массив в rowData. Выведем в консоль значения sheet.data[0].rowData:

Посмотрим, что лежит, например, во втором элементе массива — выведем в консоль sheet.data[0].rowData[1].

Результаты запроса

Отлично, мы выяснили, что в каждом элементе из массива sheet.data[0].rowData в values лежит информация об имени друга и его дне рождения. Давайте научим бота правильно отвечать на основе этой информации.

Напишем функцию, которая ищет соответствие введенного имени друга строке в таблице.

const findRowIndex = ( sheet, message ) => < const rowIndex = sheet.data[0].rowData.findIndex( ( item ) =>( item.values[0].formattedValue === message ) ); return rowIndex; >;

И используем эту функцию в saysBirthday. Найдем день рождения друга в массиве данных sheet.data[0].rowData, исходя из найденного индекса в функции findRowIndex.

const saysBirthday = async ( ctx ) => < const range = ‘Дни рождения’; const message = ctx.message.text; const apiClient = await getApiClient(); const [sheet] = await getValuesData( apiClient, range ); const rowIndex = findRowIndex( sheet, message ); const birthday = sheet.data[0].rowData[rowIndex].values[1].formattedValue; ctx.reply(`День Рождения твоего друга: $.`); >;

Поправим текст, который бот выдает на старте.

bot.start( ( ctx ) => < ctx.reply(‘Привет! Я бот по работе с гугл табличкой! Напиши имя друга, День Рождения которого хочешь узнать.’); >);

Проверяем работу функции.

Всё работает так, как мы задумали

Еще немного модернизируем код на случай, если имя друга в таблице не будет найдено.

const saysBirthday = async ( ctx ) => < const range = ‘Дни рождения’; const message = ctx.message.text; const apiClient = await getApiClient(); const [sheet] = await getValuesData( apiClient, range ); const rowIndex = findRowIndex( sheet, message ); if ( rowIndex.length ) < const birthday = sheet.data[0].rowData[rowIndex].values[1].formattedValue; ctx.reply(`День Рождения твоего друга: $.`); > else < ctx.reply(‘Попробуй снова, указанное имя не найдено(‘); >>;

Отлично! Бот работает так, как мы задумали.

Это простейший пример для начала работы с Google Sheets API v4. Разобравшись, какой формат данных возвращает метод spreadsheets.get, попробуйте получить данные с помощью метода spreadsheets.values.get. Он возвращает данные меньшего объема и меньшей вложенности, но вполне подойдёт, если не нужно считывать и записывать данные о форматировании ячеек. Советуем изучить документацию, с помощью которой можно будет реализовывать более сложную логику, переписывать значения ячеек и форматировать их.

Ещё о создании бота:

  • Как написать Телеграм-бота на JavaScript
  • Телеграм-бот на сервере

«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.

Еще по теме:  Найти ТГ канал по пост

Источник: htmlacademy.ru

Передача данных из «Google Таблиц» в Telegram – это просто!

Вы думаете, что настроить передачу данных из Google Sheets в Telegram – это сложно? На самом деле, всё гораздо проще, чем можно себе представить, если использовать Apix-Drive !

Настройка передачи информации из «Гугл Таблиц» в «Телеграмм» открывает бизнесу, фрилансерам и обычным пользователям массу возможностей и может избавить их от необходимости выполнят рутинные задачи. Зачем тратить время на ручную отправку сообщения о добавлении новых строк в таблицу, когда можно сделать так, чтобы соответствующие уведомления отправлялись автоматически.

Кому могут понадобиться такие возможности и как их реализовать — об этом и пойдет речь ниже.

Кому и зачем нужна интеграция «Телеграмма» с «Гугл Таблицами»?

Рассмотрим только две ситуации, хотя на самом деле их огромное множество. Допустим, у вас есть интернет-магазин, вы пока не используете CRM и фиксируете информацию о заказах и клиентах в «Гугл Таблице». Вам может понадобиться распределить поступающие заказы между ответственными менеджерами. Часто при этом передача данных осуществляется вручную.

Если заказов 10-20, то справиться можно, хотя это и потребует дополнительных временных затрат. Но как быть, если в день поступает 50, 100 и больше заказов и идут они из разных источников? Трудно ничего не пропустить и не допустить ошибку.

Другой пример, вы работаете на фрилансе и получаете задачи от клиента в «Гугл Таблицах», чтобы ничего не пропустить нужно постоянно заглядывать в файл или ждать, когда о новых задачах сообщит заказчик. Если оба замотались — пропущена задача и снова потеряно время.

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

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

Но сначала давайте разберемся, как настроить связь таблицы с Telegram с помощью ApiX-Drive на примере упомянутого выше интернет-магазина.

Как связать работу «Google Таблиц» и Telegram с помощью ApiX-Drive?

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

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

Указываем, о каком действии будут отправляться уведомления в «Телеграмм». Нам нужно, чтобы приходила информация о новых заказах, поэтому выбираем «Загрузить строки (новые)».

Теперь подключаем аккаунт, в котором находится таблица с заказами. Если вы выполнили вход в профиль любого сервиса «Гугла» — система сама распознает, ваш аккаунт, вам останется только предоставить ей доступ к данным.

Выбираем файл, с которым будем связывать Telegram. ApiX-Drive подгрузит все таблицы с вашего «Гугл Диска», указываем нужную. Если в ней много листов — понадобится указать конкретный лист, с которого системе нужно брать данные.

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

Затем ApiX-Drive предлагает настроить фильтры, если это необходимо. Допустим, нам не интересны заказы с суммой меньше 200 долларов. Их будут обрабатывать в обычном режиме, а менеджеры получат оповещения в «Телеграмм» только о тех, которые равны или больше этой цифры. Так они смогут проследить лично за исполнением крупных заказов.

Еще по теме:  Telegram эта группа недоступна так как использовалась

Чтобы это настроить, нажимаем «Добавить условие фильтрации».

В «Поле для фильтрации» указываем столбец, в котором вы записываете цены. В пункте «Действие» выбираем «больше равно», затем появится поле «Значение», сюда записываем цифру 200.

Можно выбирать и другие условия для передачи, например, по статусу сделки, дате её исполнения, источнику. Так, возможно вы хотите отправлять менеджеру информацию о заказах, полученных именно с сайта, игнорируя все офлайн-заказы. В таком случае выбираем колонку с источником сделки в «Поле для фильтрации», выбираем действие «регулярное выражение», а в «значении» пишем «сайт».

Обратите внимание, что есть возможность одновременно подключать сразу несколько фильтров по разным значениям, сочетая их между собой. При этом можно задействовать два варианта условий. «И» – если вам нужно, чтобы выполнялось условие всех фильтров одновременно; «ИЛИ» – когда достаточно срабатывания лишь одного из фильтров.

Так, в первом случае можно настроить передачу уведомлений, когда заказ больше или равен 200 долларов И получен с сайта. Во втором же случае достаточно, чтобы выполнялось то ИЛИ другое условие.

Как видим, фильтры – это очень мощный инструмент, позволяющий не ограничиваться простой передачей данных, но сделать так чтобы при этом учитывались самые разные условия.

На этом настройка «Гугл Таблиц» завершена, переходим к Telegram, который будет использоваться как приёмник данных.

Выбираем его в списке и добавляем нужное нам действие действие — «Отправить сообщение».

Это означает, что вы всё сделали правильно. Теперь настраиваем сообщение, которое будет приходить в мессенджер.

Системные данные — это информация о том, когда произошло событие. Если вам важно, чтобы менеджер получил время и дату, когда заказ был добавлен в таблицу — добавляем эти значения. Лучше в столбик, так удобнее будет форматировать и просматривать.

Когда закончили с системными, переходим к данным из «Гугл Таблиц». Чтобы менеджеру приходила не только сумма, но и информация о заказе, выбираем нужные колонки, например, добавим еще ФИО клиента, у нас эти данные в колонке В.

На этом настройка связи завершена, чтобы проверить, что всё работает, можно отправить тестовое сообщение. Осталось включить автообновление.

Добавим в «Гугл Таблицу» новый заказ в графу 7, с которой мы настроили прием уведомлений:

И вот в «Телеграмм» пришло сообщение о новом заказе:

Теперь добавим заказ со значением 200 долларов. И для чистоты эксперимента добавляем еще заказ с меньшей суммой, например, 150 долларов:

Уведомление о заказе на 200 пришло пришло, а вот на 150 – нет. Все работает!

На самом деле настраивать связь и передавать нужные данные очень просто. У сервиса интуитивно понятный интерфейс. На каждом этапе вам будут предлагаться пошаговые инструкции. Если же всё равно что-то будет непонятно, то к вашим услугам подробная справка со скриншотами и даже видеоуроками.

У ApiX-Drive очень широкие возможности, можно выстраивать целые структуры, позволяющие автоматизировать практически что угодно. Например, зачем вносить данные о новых заказах в Google Sheets вручную, если можно сделать так, чтобы они автоматически погружались с сайта магазина. Получается уже более интересная схема – сначала данные автоматически приходят в таблицы, а затем уже отправляются в мессенджеры менеджерам.

И подобных идей можно придумать множество – все зависит от потребностей вашего бизнеса! Регистрируйтесь в Apix-Drive и получите бесплатный тестовый период, чтобы оценить все возможности сервиса.

Источник: teletype.in

Рейтинг
( Пока оценок нет )
Загрузка ...