Ваш особистий Telegram-асистент: Як за 15 хвилин створити бота для нотаток у Google Таблиці
Записувати витрати, ідеї чи короткі службові нотатки прямо в таблицю з телефону — це один із тих дрібних процесів, які майже всі ненавидять. Маленькі клітинки, незручний мобільний інтерфейс, ручне перемикання між колонками. У результаті облік відкладається “на потім”, а потім або забувається, або перетворюється на хаос.

Саме тут добре працює формат “бот-посередник”. Ви пишете повідомлення так, ніби кидаєте його другові в Telegram, а далі система сама витягує сенс, визначає категорію, суму і записує все в Google Таблицю. Для користувача це виглядає майже магічно: написали “Купив каву за 60 грн” — і запис уже в обліку. Але під капотом там не магія, а дуже приземлена автоматизація на Node.js, Telegram Bot API, OpenAI і Google Sheets API.
У чому тут реальна користь, а не просто “вау-ефект”
Цінність такого бота не в тому, що він “розмовляє з вами людською мовою”. Це приємний інтерфейс, але бізнес-користь глибша. Ви знімаєте тертя між думкою й фіксацією даних. Не відкриваєте таблицю, не думаєте, в яку колонку що ставити, не губите дрібні витрати й ідеї.
Такий сценарій добре підходить для:
- обліку особистих і командних витрат;
- збору ідей для контенту;
- швидких операційних нотаток;
- фіксації дрібних покупок, задач і спостережень у полі.
Якщо вам уже близька логіка інтеграції Google Sheets з Telegram та Slack, цей бот — природне продовження тієї ж ідеї: месенджер стає людським інтерфейсом до таблиці.
Як працює “магія” насправді
Пайплайн тут дуже простий:
- Telegram-бот отримує текстове повідомлення.
- Node.js-сервіс передає текст у модель.
- ШІ повертає структурований JSON: категорію, суму, опис.
- Скрипт дописує новий рядок у Google Sheets.
- Бот відповідає користувачу, що запис збережено.
Тут важливий не сам факт використання LLM, а спосіб її застосування. Ми не просимо модель “подумати красиво”. Ми ставимо вузьке завдання: повернути чисту структуру для таблиці. Саме тому такий підхід працює стабільніше й краще масштабується на реальні мікропроцеси.
Створили: BotFather, таблицю і доступ до Sheets API

Перший крок — створити бота через @BotFather і отримати токен. Другий — підготувати Google Таблицю, куди будуть летіти дані. Третій — увімкнути Google Sheets API і видати застосунку доступ.
Для тестового запуску це простіше, ніж здається. Але тут є одна чесна ремарка: Google quickstart для Node.js використовує спрощену модель автентифікації, яку сама Google рекомендує саме для тестового середовища. Для продакшн-сценарію краще окремо продумати, як ви зберігаєте ключі, токени й доступ до таблиць.
Написали: простий Node.js-скрипт, який з’єднує Telegram, OpenAI і Sheets
Нижче — компактний приклад, який показує саму ідею. Він слухає повідомлення, просить модель повернути JSON і додає рядок у таблицю.
import TelegramBot from "node-telegram-bot-api";
import OpenAI from "openai";
import { google } from "googleapis";
const bot = new TelegramBot(process.env.TELEGRAM_BOT_TOKEN, { polling: true });
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const auth = new google.auth.GoogleAuth({
keyFile: "./credentials.json",
scopes: ["https://www.googleapis.com/auth/spreadsheets"],
});
const sheets = google.sheets({ version: "v4", auth });
bot.on("message", async (msg) => {
try {
const text = msg.text || "";
const aiResponse = await openai.chat.completions.create({
model: "gpt-4o-mini",
response_format: { type: "json_object" },
messages: [
{
role: "system",
content:
"Перетвори повідомлення на JSON: {category, amount, description}. Якщо суми немає — amount = 0. Не додавай пояснень поза JSON.",
},
{
role: "user",
content: text,
},
],
temperature: 0.1,
});
const data = JSON.parse(aiResponse.choices[0].message.content);
await sheets.spreadsheets.values.append({
spreadsheetId: process.env.SPREADSHEET_ID,
range: "Лист1!A:D",
valueInputOption: "USER_ENTERED",
requestBody: {
values: [[new Date().toISOString(), data.category, data.amount, data.description]],
},
});
await bot.sendMessage(msg.chat.id, "✅ Записано в таблицю!");
} catch (error) {
console.error(error);
await bot.sendMessage(msg.chat.id, "Сталася помилка. Перевір логіку парсингу або доступ до таблиці.");
}
});Будьте обачні, використовуючи код.
Що тут важливо пояснити словами
Сильна сторона цього сценарію — не в коді як такому, а в промпті. Саме від нього залежить, чи бот поверне придатну структуру, а не “розумну відповідь у вільній формі”. Вам треба чітко сказати моделі:
- яку роль вона виконує;
- який формат має повернути;
- що робити, якщо суми немає;
- що не можна додавати текст поза JSON.
Це вже схоже не на чат, а на мікросервіс, який виконує вузьку NLP-задачу. За тим самим принципом, до речі, працюють і складніші сценарії на кшталт мікросервісів на Node.js для Google Workspace, тільки там замість особистих нотаток можуть бути вебхуки, листи, документи чи дані з кількох систем одразу.
Приклад промпту, який краще тримає структуру
Щоб бот поводився передбачувано, системне повідомлення краще робити не “дружнім”, а операційним. Наприклад так:
Ти асистент для обліку коротких нотаток у Google Sheets.
Поверни тільки JSON без пояснень.
Формат:
{
"category": "string",
"amount": number,
"description": "string"
}
Правила:
- якщо суми немає, став 0;
- якщо це ідея, category = "Ідеї";
- якщо це витрата на їжу, category = "Харчування";
- description має бути коротким і зрозумілим.Після такого промпту фраза на кшталт Обід 250 грн уже перетворюється не просто на текст, а на нормальний запис для таблиці.
Чим це краще за ручний ввід у Google Sheets

Бо ви не працюєте з таблицею напряму. Ви працюєте з інтерфейсом, який для людини природний: коротке повідомлення в чаті. А таблиця лишається системою зберігання, а не місцем, де ви мучитеся з дрібною рутиною.
Особливо це відчутно, коли потрібно швидко зафіксувати дані “на ходу”: покупку, думку, тему для статті, коротку задачу. У цьому місці Telegram-бот виграє не у складної CRM, а саме у незручного мобільного вводу.
Де тут межа і коли вже потрібен інший рівень
Такий бот ідеальний як легкий особистий або командний асистент. Але якщо сценарій стає складнішим — з історією користувачів, кількома таблицями, ролями, чергами, багатокроковою логікою, перевіркою дублювань або обробкою вкладень — тоді варто переходити до більш системної архітектури.
У такому випадку Telegram стає лише одним із каналів, а справжня логіка вже живе в окремому сервісі. Якщо далі вам треба не просто записувати нотатки, а будувати складніший автоматизований контур, варто дивитися в бік сценаріїв на кшталт голосового Telegram-бота для нотаток у Google Sheets або навіть більш важких пайплайнів, де LLM не просто парсить текст, а приймає участь у класифікації й маршрутизації даних.
А як щодо хостингу

Хороша новина в тому, що для такого бота не потрібен “дорогий DevOps”. Для старту вистачає простого середовища, яке може тримати Node.js-процес, environment variables і вихід у мережу. Для тестів або невеликих особистих сценаріїв підійдуть і легкі хмарні платформи. Але тут важливо формулювати чесно: не кожен сервіс дає повноцінний безстроковий free-план для постійно працюючого бота. Наприклад, у Render є безкоштовні web services для тестування, а Railway зараз більше про trial-модель із кредитами, ніж про “вічно безкоштовний” бекенд.
Тобто правильна думка тут така: бот не вимагає важкого хостингу, але перед запуском краще перевірити актуальні умови платформи, а не покладатися на старі поради з форумів.
Практичний підсумок
Уся сила цього сценарію в автономності. Ви один раз налаштовуєте бота — і далі він працює на вас 24/7. Не просить відкрити таблицю. Не змушує боротися з мобільним інтерфейсом. Не змушує кожного разу “зібратися”, щоб щось занести в облік.
І це хороший приклад того, як корисна автоматизація починається не з великого бюджету, а з маленького вузького сценарію, де є постійне тертя. Ви просто пишете повідомлення, а система вже сама розкладає його по поличках.
Останні статті

Автопілот для Gmail: Як навчити пошту саму сортувати важливі листи за допомогою ШІ
Ранок із 50+ листами — це не “організована комунікація”, а міні-лотерея. Більшість повідомлень — шум: розсилки, автоматичні підтвердження, квитанції, другорядні апдейти.…

Прощавай, ручне копіювання: Як за допомогою ШІ зібрати дані з будь-якого сайту за 2 хвилини
Потрібно виписати ціни 50 товарів із сайту конкурента? Зібрати заголовки з блогу? Витягнути список контактів із відкритого каталогу? Робити це руками через нескінченні C…

Автономні LLM-агенти в Google Workspace: Автоматична відповідь на Email через Node.js
У відділах продажу й сапорту email дуже швидко перетворюється на окремий фронт операційного навантаження. Листів багато, формулювання різні, частина звернень повторюєтьс…

Мікроавтоматизація без SaaS: створюємо bookmarklet для YouTube, який додає десятки відео в чергу однією кнопкою
Коли треба переглянути 20–50 відео по темі, ручне додавання кожного ролика в YouTube queue починає дратувати набагато сильніше, ніж здається на старті. Начебто це всього…

Stateless-автоматизація: Розгортання Google Apps Script як Webhook-сервера
Коли в компанії з’являється кілька CRM, форм, платіжних сервісів і внутрішніх таблиць, дуже швидко виростає “зоопарк” інтеграцій. Один сценарій забирає лід із форми, дру…

Голосове керування бізнесом: Створюємо Telegram-бота, який розуміє ваші аудіо-нотатки
Хороші ідеї, витрати й важливі дрібниці рідко приходять у зручний момент. Зазвичай це трапляється за кермом, між зустрічами, у черзі або дорогою на об’єкт. Відкрити нота…