Как связать Google Sheets с Telegram-ботом: полное руководство по управлению данными без кода
Представьте: вы меняете цену на услугу в простой Google Таблице, и она мгновенно обновляется в вашем Telegram-боте, доступном тысячам клиентов. Без ручного копирования, без риска ошибок, без привлечения дорогого программиста. Звучит как магия? Нет, это доступная реальность, о которой мы сегодня поговорим.
Многие предприниматели, менеджеры и специалисты сталкиваются с одной и той же проблемой: как оперативно управлять информацией, которую видит пользователь в Telegram-боте? Будь то расписание занятий, прайс-лист на товары, список доступных услуг или ответы на часто задаваемые вопросы — ручное обновление через код бота отнимает время и требует технических навыков.
Эта статья — ваше пошаговое руководство по созданию мощной и гибкой связки: Telegram-бот + Google Sheets. Мы разберем три разных по сложности и возможностям способа, которые позволят вам управлять данными бота так же легко, как вы редактируете обычный документ. Вы узнаете:
- Почему Google Sheets — это идеальная и бесплатная “админка” для вашего бота.
- Как настроить интеграцию с помощью Google Apps Script — мощного инструмента прямо внутри Таблиц.
- Как связать всё за 15 минут без единой строчки кода через no-code платформы вроде Make (Integromat).
- Как создать более сложную и гибкую логику с помощью простого скрипта на Python.
- И самое главное — как правильно организовать данные в таблице, чтобы бот читал их без ошибок.
Это руководство предназначено для тех, кто хочет автоматизировать свой бизнес и сделать технологии своими помощниками, а не головной болью. Давайте начнем!
Зачем вашему бизнесу нужна связка Telegram-бота и Google Sheets?
На первый взгляд, Telegram и Google Sheets — инструменты из разных миров. Один для общения, другой для работы с данными. Но их объединение создает синергию, которая может кардинально упростить многие бизнес-процессы. Google Таблица в этой связке выступает в роли простой, понятной и, что немаловажно, бесплатной базы данных и панели администратора.
Вот ключевые преимущества этой интеграции:
- Мгновенная актуализация данных. Любое изменение в ячейке таблицы (новая цена, добавление услуги, изменение статуса “в наличии”) может моментально отображаться в боте. Ваши клиенты всегда видят самую свежую информацию.
- Экономия времени и денег. Вам больше не нужно обращаться к разработчику для каждого мелкого изменения контента. Вы или ваш менеджер можете управлять информацией самостоятельно, экономя бюджет и часы работы.
- Простота и доступность. Почти каждый офисный сотрудник умеет работать с Excel или Google Sheets. Интерфейс таблиц интуитивно понятен, не требует специального обучения.
- Централизованное хранилище информации. Вся важная информация (товары, клиенты, заказы, расписание) хранится в одном месте, структурирована и всегда под рукой.
- Двусторонняя связь. Бот может не только показывать данные из таблицы, но и записывать их туда. Это открывает огромные возможности: от сбора заявок и отзывов до ведения простой CRM-системы прямо в Google Sheets.
Примеры реального использования:
- Бот-витрина для магазина. В таблице — список товаров с названиями, описаниями, ценами и ссылками на фото. Бот по запросу пользователя находит нужный товар и выдает карточку с актуальной информацией.
- Бот для записи на услуги. В таблице — расписание мастеров или слотов для записи. Пользователь в боте видит свободное время, записывается, и бот автоматически отмечает этот слот как занятый в таблице.
- Информационный бот (FAQ). Таблица содержит два столбца: “Вопрос” и “Ответ”. Бот ищет по ключевым словам в первом столбце и выдает готовый ответ из второго.
- Бот для сбора лидов. Пользователь оставляет в боте свои контакты (имя, телефон), и они автоматически добавляются новой строкой в Google Таблицу для дальнейшей обработки отделом продаж.
Как видите, сценарии ограничены только вашей фантазией. Эта связка — мощный инструмент для автоматизации и повышения эффективности практически любого малого и среднего бизнеса.
Способ 1: Google Apps Script — ваш бесплатный “сервер” для Telegram-бота
Это самый мощный и гибкий из “бесплатных” методов. Google Apps Script (GAS) — это, по сути, JavaScript, который работает на серверах Google и тесно интегрирован со всеми их продуктами, включая Таблицы, Документы и Диск. Используя GAS, мы можем написать небольшой скрипт, который будет слушать команды от Telegram и работать с нашей таблицей.
Преимущества | Недостатки |
---|---|
Полностью бесплатно. Нет лимитов на количество операций, как в no-code сервисах. | Требует базовых навыков программирования (синтаксис JavaScript). |
Нативная интеграция. Максимально быстрая и надежная работа с Google Sheets. | Ограничения по времени выполнения скрипта (до 6 минут на запуск). |
Высокая гибкость. Можно реализовать практически любую логику. | Настройка может показаться сложной для новичка. |
Не нужен отдельный хостинг. Скрипт живет и работает прямо в экосистеме Google. | Отладка (поиск ошибок) менее удобна, чем в полноценных средах разработки. |
Этот способ идеально подходит, если вы не боитесь немного разобраться в коде и хотите получить максимально функциональное и бесплатное решение.
Пошаговая инструкция по настройке
Шаг 1: Создание бота в Telegram и получение токена
- Откройте Telegram и найдите официального бота @BotFather.
- Отправьте ему команду
/newbot
. - Следуйте инструкциям: придумайте имя для бота (например, “Мой Тестовый Магазин”) и его уникальный username (должен заканчиваться на
bot
, например,MyTestShopBot
). - В ответ BotFather пришлет вам токен — уникальный ключ доступа к API вашего бота. Он выглядит примерно так:
1234567890:AAG-AbCdEfGhIjKlMnOpQrStUvWxYz
. Скопируйте и сохраните его в надежном месте. Это пароль от вашего бота!
Шаг 2: Подготовка Google Таблицы
- Создайте новую Google Таблицу.
- На первом листе создайте простую структуру. Например, для прайс-листа: столбец
A
— Артикул (ID товара), столбецB
— Название, столбецC
— Цена. - Заполните несколько строк для теста.
Шаг 3: Создание скрипта в Google Apps Script
- В вашей Google Таблице откройте меню Расширения > Apps Script.
- Откроется редактор кода. Удалите все, что там есть, и вставьте следующий код:
// Вставьте сюда ваш токен, полученный от BotFather
var TOKEN = "1234567890:AAG-AbCdEfGhIjKlMnOpQrStUvWxYz";
// URL API Telegram
var TELEGRAM_API_URL = "https://api.telegram.org/bot" + TOKEN;
// Получаем доступ к нашей таблице
var SPREADSHEET = SpreadsheetApp.getActiveSpreadsheet();
// Эта функция будет вызываться при каждом обращении к нашему скрипту
function doPost(e) {
// Получаем данные, которые прислал Telegram
var update = JSON.parse(e.postData.contents);
// Извлекаем ID чата и текст сообщения от пользователя
var chatId = update.message.chat.id;
var userMessage = update.message.text;
// Проверяем, что пользователь отправил команду /price
if (userMessage.startsWith("/price")) {
// Извлекаем артикул из команды (например, из "/price 101" получаем "101")
var article = userMessage.split(" ")[1];
if (article) {
// Ищем товар в таблице
var productInfo = findProductByArticle(article.trim());
// Отправляем ответ пользователю
sendMessage(chatId, productInfo);
} else {
sendMessage(chatId, "Пожалуйста, укажите артикул после команды. Например: /price 101");
}
} else {
// Ответ на любое другое сообщение
sendMessage(chatId, "Привет! Чтобы узнать цену, отправь мне команду /price [артикул]. Например: /price 101");
}
}
// Функция для поиска товара в таблице
function findProductByArticle(article) {
var sheet = SPREADSHEET.getSheetByName("Лист1"); // Укажите имя вашего листа
var data = sheet.getDataRange().getValues(); // Получаем все данные с листа
// Проходим по всем строкам, начиная со второй (пропускаем заголовок)
for (var i = 1; i < data.length; i++) {
// Если артикул в первой колонке (индекс 0) совпадает с искомым
if (data[i][0] == article) {
var productName = data[i][1]; // Название из второй колонки
var productPrice = data[i][2]; // Цена из третьей колонки
return "Товар: " + productName + "\nЦена: " + productPrice + " руб.";
}
}
return "Товар с артикулом " + article + " не найден.";
}
// Функция для отправки сообщения в Telegram
function sendMessage(chatId, text) {
var url = TELEGRAM_API_URL + "/sendMessage?chat_id=" + chatId + "&text=" + encodeURIComponent(text);
UrlFetchApp.fetch(url);
}
// Эта функция нужна для первоначальной настройки связи с Telegram
function setWebhook() {
// Получаем URL нашего опубликованного скрипта
var webAppUrl = ScriptApp.getService().getUrl();
// Отправляем этот URL в Telegram, чтобы он знал, куда присылать обновления
var response = UrlFetchApp.fetch(TELEGRAM_API_URL + "/setWebhook?url=" + webAppUrl);
Logger.log(response.getContentText()); // Посмотрим ответ от Telegram в логах
}
Шаг 4: Развертывание и настройка
- Замените
"1234567890:AAG-AbCdEfGhIjKlMnOpQrStUvWxYz"
на ваш реальный токен. - Сохраните проект (иконка дискеты).
- Нажмите кнопку Развертывание > Новое развертывание.
- В появившемся окне выберите тип развертывания (иконка шестеренки) — Веб-приложение.
- В поле Кто имеет доступ выберите Все. Это очень важно, иначе серверы Telegram не смогут достучаться до вашего скрипта.
- Нажмите Развернуть. Google попросит вас предоставить разрешения. Согласитесь со всеми.
- После развертывания вы получите URL веб-приложения. Скопируйте его.
- Теперь нам нужно “сообщить” Telegram, куда отправлять все сообщения, адресованные нашему боту. Для этого в редакторе Apps Script выберите функцию
setWebhook
в выпадающем меню над кодом и нажмите кнопку Выполнить. Этот шаг нужно сделать только один раз. - Чтобы убедиться, что все прошло успешно, откройте меню Просмотр > Журналы. Вы должны увидеть сообщение от Telegram, что-то вроде
{"ok":true,"result":true,"description":"Webhook was set"}
.
Всё готово! Теперь откройте вашего бота в Telegram, отправьте ему сообщение /price 101
(где 101 — это артикул, который есть в вашей таблице), и он должен ответить вам информацией о товаре.
Способ 2: No-code платформы (Make/Integromat) — быстрая интеграция без единой строчки кода
Если предыдущий способ показался вам слишком сложным, не отчаивайтесь. Существуют no-code (или low-code) платформы — это онлайн-конструкторы, которые позволяют связывать разные сервисы между собой с помощью визуального интерфейса, перетаскивая блоки и настраивая их. Для нашей задачи идеально подходит сервис Make (в прошлом известный как Integromat).
Преимущества | Недостатки |
---|---|
Невероятно быстро. Простую связку можно настроить за 10-20 минут. | Ограничения бесплатного тарифа. Обычно есть лимит на количество операций в месяц. |
Не нужен код. Вообще. Весь процесс — это настройка визуальных блоков. | Меньшая гибкость. Вы ограничены возможностями готовых модулей. |
Наглядно. Вы видите всю логику работы вашего сценария на одном экране. | При больших объемах данных или сложных сценариях может стать дорогим. |
Огромное количество интеграций. Можно подключить не только Telegram и Sheets, но и сотни других сервисов (CRM, почта, соцсети). | Зависимость от стороннего сервиса. |
Этот способ — идеальный выбор для быстрого старта, тестирования гипотез и для тех, кто ценит свое время и не хочет погружаться в программирование.
Пример создания сценария в Make
Шаг 1: Регистрация и создание сценария
- Зарегистрируйтесь на сайте make.com. У них есть щедрый бесплатный тариф для начала.
- В личном кабинете нажмите Create a new scenario.
Шаг 2: Настройка триггера (получение сообщения из Telegram)
- На пустом экране нажмите на большой плюс и в поиске найдите Telegram Bot.
- Выберите триггер (первый модуль) — Watch Updates. Этот модуль будет “слушать” все новые сообщения, приходящие вашему боту.
- Нажмите Add рядом с полем Webhook. Вам нужно будет подключить вашего бота. Make попросит вас ввести токен, который вы получили от @BotFather. Введите его и сохраните.
- После этого Make сгенерирует уникальный webhook URL. Копировать его не нужно, Make все сделает сам. Просто нажмите OK.
Шаг 3: Добавление модуля Google Sheets (поиск данных)
- Наведите мышь на правый край модуля Telegram и нажмите на появившийся плюсик, чтобы добавить следующий шаг.
- Найдите в поиске Google Sheets и выберите действие (action) — Search Rows.
- Подключите ваш Google Аккаунт. Make попросит разрешения на доступ к вашим таблицам.
- Теперь настройте модуль:
- Select a Spreadsheet and a Sheet: Выберите из списка вашу таблицу и нужный лист.
- Table contains headers: Поставьте “Yes”, если у вас есть строка с заголовками.
- Filter: Здесь начинается самое интересное. Нам нужно найти строку, где значение в колонке “Артикул” равно тому, что прислал пользователь.
- В первом поле выберите вашу колонку с артикулами (например,
A: Артикул
). - В качестве оператора сравнения оставьте
Equal to (case insensitive)
(равно, без учета регистра). - Во втором поле нужно подставить текст от пользователя. Но нам нужен не весь текст (
/price 101
), а только число101
. Для этого используем встроенные функции Make. Формула может выглядеть так:{{substring(2.text; 7)}}
или, если команда может быть разной длины, что-то вроде{{last(split(2.text; " "))}}
. Это выражение “берет” текст из второго модуля (Telegram) и “отрезает” последнее слово после пробела.
- В первом поле выберите вашу колонку с артикулами (например,
- Maximum number of returned rows: Поставьте 1, так как нам нужен только один товар.
Шаг 4: Добавление финального модуля (отправка ответа в Telegram)
- Добавьте еще один модуль после Google Sheets. Снова выберите Telegram Bot.
- Выберите действие Send a Text Message or a Reply.
- Настройте его:
- Chat ID: В это поле нужно подставить ID чата, из которого пришло сообщение. Нажмите на поле и выберите из данных первого модуля (Telegram) переменную
Chat ID
. - Text: Здесь мы конструируем ответ. Вы можете писать обычный текст и вставлять в него данные, которые мы нашли в таблице на предыдущем шаге. Например:
Товар: {{3.B}}
(где3.B
— это значение из колонки B найденной строки в Google Sheets).Цена: {{3.C}} руб.
(где3.C
— значение из колонки C).
- Chat ID: В это поле нужно подставить ID чата, из которого пришло сообщение. Нажмите на поле и выберите из данных первого модуля (Telegram) переменную
Шаг 5: Обработка ошибок и запуск
Что если товар не найден? Модуль Google Sheets не вернет никаких данных, и следующий модуль Telegram не выполнится. Чтобы сделать бота более дружелюбным, можно добавить “обработчик ошибок”.
- Нажмите правой кнопкой мыши на модуль Google Sheets и выберите Add error handler.
- К нему привяжите еще один модуль Telegram Bot (Send a Text Message), в котором напишите сообщение вроде: “Товар с таким артикулом не найден. Пожалуйста, проверьте правильность ввода.”
После завершения настройки включите сценарий (переключатель ON в левом нижнем углу) и сохраните его. Теперь ваш no-code бот готов к работе!
Способ 3: Python — гибкость и контроль для тех, кто не боится кода
Этот способ для тех, кому нужна максимальная гибкость, высокая производительность и полный контроль над логикой. Python — один из самых популярных языков для создания Telegram-ботов благодаря своей простоте и огромному количеству готовых библиотек.
В отличие от Google Apps Script, Python-скрипт нужно где-то запустить. Это называется хостинг. Варианты могут быть разными: от бесплатных (Heroku, PythonAnywhere с ограничениями) до платных виртуальных серверов (VPS), которые дают полный контроль.
Преимущества | Недостатки |
---|---|
Максимальная гибкость. Вы можете реализовать любую, даже самую сложную логику, кэширование, аналитику. | Требует навыков программирования на Python. |
Высокая производительность. Правильно написанный бот на Python будет работать быстрее, чем на GAS. | Нужен хостинг. Это может быть как бесплатно, так и стоить денег. |
Огромное сообщество и библиотеки. Легко найти решение почти любой задачи. | Более сложная настройка. Нужно разбираться не только с кодом, но и с развертыванием на сервере. |
Масштабируемость. Такого бота легко масштабировать под высокую нагрузку. |
Что понадобится:
- Базовые знания Python.
- Установленный Python на вашем компьютере.
- Библиотеки:
pyTelegramBotAPI
илиaiogram
для работы с Telegram API.gspread
для удобной работы с Google Sheets.oauth2client
для авторизации в Google API.
- Аккаунт в Google Cloud для создания учетных данных сервиса (это безопасный способ дать вашему скрипту доступ к таблице).
Пример простого скрипта на Python
Шаг 1: Настройка доступа к Google Sheets API
Это самый сложный шаг в подготовке, но его нужно сделать один раз.
- Зайдите в Google Cloud Console.
- Создайте новый проект.
- Перейдите в “APIs & Services” > “Library” и включите Google Drive API и Google Sheets API.
- Перейдите в “APIs & Services” > “Credentials”.
- Нажмите “Create Credentials” > “Service account”. Придумайте имя, нажмите “Done”.
- Найдите созданный аккаунт в списке, нажмите на него, перейдите на вкладку “Keys”.
- Нажмите “Add Key” > “Create new key”, выберите JSON и сохраните скачанный файл. Это ваш ключ доступа, храните его надежно!
- Откройте JSON-файл. Внутри вы найдете email вашего сервисного аккаунта (вида
...gserviceaccount.com
). - Откройте вашу Google Таблицу и предоставьте доступ (как обычному пользователю) этому email с правами редактора.
Шаг 2: Установка библиотек и написание кода
Откройте терминал или командную строку и установите нужные библиотеки: pip install pyTelegramBotAPI gspread oauth2client
Создайте файл bot.py
и напишите следующий код:
import telebot
import gspread
from oauth2client.service_account import ServiceAccountCredentials
# --- НАСТРОЙКИ ---
BOT_TOKEN = 'ВАШ_ТЕЛЕГРАМ_ТОКЕН'
# Путь к вашему JSON-ключу, полученному в Google Cloud
GOOGLE_CREDENTIALS_FILE = 'path/to/your/credentials.json'
# Имя вашей Google Таблицы
GOOGLE_SHEET_NAME = 'Имя вашей таблицы'
# --- ИНИЦИАЛИЗАЦИЯ ---
bot = telebot.TeleBot(BOT_TOKEN)
# Авторизация в Google Sheets
scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name(GOOGLE_CREDENTIALS_FILE, scope)
client = gspread.authorize(creds)
sheet = client.open(GOOGLE_SHEET_NAME).sheet1 # Получаем первый лист
# --- ЛОГИКА БОТА ---
@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
bot.reply_to(message, "Привет! Чтобы узнать цену, отправь мне команду /price [артикул]. Например: /price 101")
@bot.message_handler(commands=['price'])
def find_price(message):
try:
# Получаем текст сообщения и разбиваем его на части
parts = message.text.split()
if len(parts) < 2:
bot.reply_to(message, "Пожалуйста, укажите артикул после команды. Например: /price 101")
return
article_to_find = parts[1]
# Ищем ячейку с нужным артикулом в первом столбце
cell = sheet.find(article_to_find, in_column=1)
if cell:
# Если нашли, получаем всю строку
row_data = sheet.row_values(cell.row)
product_name = row_data[1] # Название из 2-й колонки
product_price = row_data[2] # Цена из 3-й колонки
response = f"Товар: {product_name}\nЦена: {product_price} руб."
bot.reply_to(message, response)
else:
bot.reply_to(message, f"Товар с артикулом {article_to_find} не найден.")
except Exception as e:
print(e) # Выводим ошибку в консоль для отладки
bot.reply_to(message, "Произошла ошибка при поиске. Попробуйте позже.")
# Запускаем бота (он будет постоянно слушать новые сообщения)
print("Бот запущен...")
bot.polling(none_stop=True)
Шаг 3: Запуск
Замените ВАШ_ТЕЛЕГРАМ_ТОКЕН
, path/to/your/credentials.json
и Имя вашей таблицы
на ваши реальные данные. Положите скачанный JSON-ключ в папку с проектом.
Запустите скрипт из терминала: python bot.py
.
Ваш бот оживет и будет работать, пока запущен этот скрипт. Для постоянной работы его нужно будет загрузить на хостинг и запустить там.
Как правильно организовать данные в Google Sheets для бота: ключ к стабильной работе
Вне зависимости от выбранного способа интеграции, успех всего предприятия на 90% зависит от того, насколько чисто и логично организованы ваши данные в Google Таблице. Хаос в таблице неизбежно приведет к ошибкам в работе бота.
Вот золотые правила, которых стоит придерживаться:
1. Один лист — одна сущность
Не смешивайте все в кучу. Если у вас есть товары, услуги и клиенты, создайте для них три отдельных листа: Товары
, Услуги
, Заявки
. Это упростит логику скриптов и сценариев.
2. Четкая и неизменная структура столбцов
Определите столбцы раз и навсегда. Если столбец A
— это артикул, B
— название, а C
— цена, то так должно быть всегда. Не добавляйте между ними новые столбцы и не меняйте их местами. Первая строка всегда должна быть заголовком (header
).
3. Никаких объединенных ячеек
Объединенные ячейки (merged cells
) — главный враг автоматизации. Они ломают логику парсинга и сбивают скрипты с толку. Каждая единица информации должна находиться в своей собственной, отдельной ячейке.
4. Уникальный идентификатор (ID) для каждой строки
У каждой строки должен быть уникальный ключ, по которому ее можно однозначно найти. Это может быть артикул для товара, ID услуги или номер заказа. Это критически важно для поиска, обновления и удаления данных. Полагаться на “название товара” для поиска — плохая идея, так как названия могут меняться или содержать опечатки.
5. Соблюдайте форматы данных
Если столбец предназначен для цен, в нем должны быть только числа. Если для дат — только даты в одном и том же формате. Смешивание форматов (например, “1000 руб.” вместо просто 1000
) усложнит обработку данных.
6. Используйте защиту диапазонов
Чтобы случайно не удалить или не испортить важные данные, используйте встроенную функцию Google Sheets Данные > Защитить листы и диапазоны. Вы можете, например, разрешить редактировать только столбец с ценами, а столбцы с ID и названиями сделать защищенными от изменений.
Пример “правильной” таблицы для прайс-листа:
A (ID) | B (Название) | C (Цена) | D (Наличие) | E (Описание) |
---|---|---|---|---|
101 | Смартфон “Космос-1” | 25000 | Да | Мощный смартфон с большим экраном. |
102 | Ноутбук “Горизонт-15” | 65000 | Да | Идеален для работы и учебы. |
103 | Наушники “Тишина-Про” | 8000 | Нет | Скоро в продаже. |
Такая структура легко читается как человеком, так и любым скриптом или no-code сервисом.
Заключение: какой способ выбрать и с чего начать?
Мы рассмотрели три мощных способа превратить обычную Google Таблицу в полноценную систему управления для вашего Telegram-бота. Каждый из них имеет свои сильные и слабые стороны, и выбор зависит исключительно от ваших задач, ресурсов и технических навыков.
Давайте подведем итог:
Google Apps Script — ваш выбор, если вы хотите бесплатное и гибкое решение, готовы потратить немного времени на изучение основ JavaScript и не планируете создавать сверхсложного бота с тысячами запросов в минуту. Это “золотая середина” по соотношению цена/возможности.
No-code платформы (Make) — идеальный вариант для быстрого старта, тестирования идей и для тех, кто далек от программирования. Если вам нужно “здесь и сейчас” автоматизировать простую задачу (например, показывать прайс-лист или собирать заявки), это самый эффективный путь.
Python — это инструмент для профессионалов и энтузиастов, которым нужна максимальная производительность, сложная логика и масштабируемость. Если ваш проект вырастет в нечто большее, чем просто информационный бот, рано или поздно вы придете к этому решению.
С чего же начать?
Наш совет — начните с самого простого пути, который решает вашу текущую проблему. Не пытайтесь сразу построить космический корабль.
- Определите задачу: Что именно должен делать бот? Просто показывать цены? Или собирать сложные заказы?
- Оцените свои навыки: Вы готовы разбираться в коде или предпочитаете визуальный конструктор?
- Попробуйте! Лучший способ понять, что вам подходит — это потратить час-другой и попробовать настроить простейшего бота с помощью Make или Google Apps Script.
Барьер для входа в мир автоматизации сегодня низок как никогда. Связка Telegram и Google Sheets — это яркий тому пример. Она позволяет малому бизнесу и частным специалистам получить в свое распоряжение инструменты, которые еще несколько лет назад были доступны только крупным компаниям с большими IT-отделами. Не бойтесь экспериментировать, и вы удивитесь, сколько рутинных задач можно переложить на плечи вашего нового цифрового помощника.