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

Стандартні правила Gmail корисні, поки світ простий: якщо в темі є слово X — повісь ярлик Y. Але реальні листи так не працюють. Один клієнт пише “маємо питання по оплаті”, інший — “не пройшла оплата”, третій — “please check invoice”, і за змістом це одна категорія. Саме тому тут краще працює не набір фільтрів, а розумне маркування: скрипт читає текст, ШІ визначає сенс, а далі лист автоматично отримує правильний ярлик і, якщо потрібно, окремий сигнал у Telegram.
У чому ідея “розумного маркування”
Замість того щоб шукати одне ключове слово, ми даємо моделі вузьке завдання: класифікувати лист у кілька прикладних категорій. Наприклад:
ВажливоРахунокПитанняСпам
Після цього Apps Script:
- дивиться останні ланцюжки у Inbox;
- бере текст листа;
- відправляє його в OpenAI;
- отримує одну категорію;
- наклеює відповідний Gmail label;
- за потреби архівує ланцюжок;
- якщо категорія критична — шле пуш у Telegram.
Тобто ви не читаєте весь потік підряд. Ви спочатку бачите те, що справді важливе. А якщо вам потрібен уже наступний рівень — не лише сортування, а й підготовка відповідей — логічним продовженням буде сценарій з LLM-агентами в Google Workspace для автоматичних чернеток листів.
Створили: ярлики в Gmail і сценарій, який працює сам
Починати варто не з коду, а з логіки. Заздалегідь створіть у Gmail кілька ярликів, з якими буде працювати скрипт:
AI_ВажливоAI_РахунокAI_ПитанняAI_Спам
Це дрібниця, але саме вона робить систему читабельною. Інакше навіть хороший класифікатор просто створює вам ще один шар хаосу.
Далі в Apps Script потрібно зробити time-driven trigger, щоб функція запускалась автоматично, наприклад щогодини. У цьому й сила підходу: рішення безсерверне, не потребує окремого VPS і працює, поки ви спите. Якщо ж потрібні багатоканальні повідомлення, цей сценарій добре стикується з інтеграцією Google Sheets з Telegram та Slack, тільки тут джерелом сигналу буде вже не таблиця, а пошта.

Написали: код для аналізу останніх листів
Нижче — базовий варіант на Apps Script. Він бере останні ланцюжки з Inbox, відправляє текст у класифікатор і чіпляє потрібний ярлик.
function classifyEmails() {
const threads = GmailApp.getInboxThreads(0, 5);
const openAiKey = PropertiesService.getScriptProperties().getProperty('OPENAI_API_KEY');
threads.forEach(thread => {
const firstMessage = thread.getMessages()[0];
const text = firstMessage.getPlainBody().substring(0, 1000);
const category = getAiCategory(text, openAiKey);
const label = GmailApp.getUserLabelByName('AI_' + category);
if (label) {
thread.addLabel(label);
if (category !== 'Важливо') {
thread.moveToArchive();
}
if (category === 'Важливо') {
sendTelegramAlert(thread, text);
}
}
});
}
function getAiCategory(text, key) {
const url = 'https://api.openai.com/v1/responses';
const payload = {
model: 'gpt-4o-mini',
input: [
{
role: 'system',
content: 'Ти класифікуєш email лише в одну категорію: Важливо, Рахунок, Питання або Спам. Поверни тільки одне слово без пояснень.'
},
{
role: 'user',
content: text
}
],
text: {
format: {
type: 'json_schema',
name: 'email_category',
strict: true,
schema: {
type: 'object',
properties: {
category: { type: 'string' }
},
required: ['category'],
additionalProperties: false
}
}
}
};
const response = UrlFetchApp.fetch(url, {
method: 'post',
contentType: 'application/json',
headers: {
Authorization: 'Bearer ' + key
},
payload: JSON.stringify(payload),
muteHttpExceptions: true
});
const json = JSON.parse(response.getContentText());
const parsed = JSON.parse(json.output_text);
return parsed.category;
}
function sendTelegramAlert(thread, text) {
const token = PropertiesService.getScriptProperties().getProperty('TELEGRAM_BOT_TOKEN');
const chatId = PropertiesService.getScriptProperties().getProperty('TELEGRAM_CHAT_ID');
const message = '⚠️ Важливий лист\
' +
'Тема: ' + thread.getFirstMessageSubject() + '\
\
' +
text.substring(0, 300);
UrlFetchApp.fetch('https://api.telegram.org/bot' + token + '/sendMessage', {
method: 'post',
payload: {
chat_id: chatId,
text: message
}
});
}Будьте обачні, використовуючи код.
Як прописати класифікатор, щоб ШІ не фантазував

Найслабше місце таких сценаріїв — не API і не GmailApp, а розмитий prompt. Якщо ви попросите модель “визначити важливість листа”, вона поверне щось красиве, але не дуже придатне для автоматизації. Вам не потрібна думка. Вам потрібен контрольований вихід.
Тому хороше системне повідомлення має:
- обмежити список категорій;
- заборонити пояснення;
- сказати, що повертати треба одне коротке значення;
- бажано задати критерії для кожної категорії.
Наприклад так:
Ти класифікатор вхідної пошти для малого бізнесу.
Доступні категорії:
- Важливо: скарга, VIP-клієнт, термінова проблема, ризик втрати грошей
- Рахунок: invoice, bill, оплата, реквізити, квитанція
- Питання: запит, уточнення, звичайний контакт
- Спам: розсилки, масові пропозиції, очевидний шум
Поверни тільки JSON:
{"category":"Важливо"}У таких дрібних речах і ховається різниця між “прикольним демо” і робочим інструментом.
Реальний кейс автора
Цей сценарій у мене народився не з теорії, а з банальної втоми від вхідної пошти по кількох робочих напрямках. Коли паралельно йдуть звернення з сайтів, технічні листи, документи, рахунки, апдейти по інтеграціях і фонові розсилки, ранковий перегляд Inbox дуже швидко перетворюється на механічне сортування, а не на нормальну роботу.
Проблема була не в тому, що листів “занадто багато”, а в тому, що справді важливі звернення губилися серед другорядних. У ручному режимі на первинний перегляд легко йшло близько 40–50 хвилин у дні з активним потоком. Після переходу на схему з AI-ярликами й окремим Telegram-алертом для пріоритетних листів я перестав читати весь Inbox підряд. Практичний ефект був простий: критичні звернення підсвічуються одразу, а ранкове сортування стискається приблизно до 10–15 хвилин замість майже години.
Для мене це і є головний маркер хорошої автоматизації: не “вау, у нас ШІ”, а дуже приземлений результат — менше рутинного перегляду, швидша реакція на важливе і менше шансів пропустити те, що реально болить бізнесу.
Де тут головна вигода для бізнесу

Така схема не замінює людину. Вона прибирає тупу частину процесу: первинний перегляд, сортування, перемикання уваги між важливим і шумом. Менеджер або власник більше не працює як ручний фільтр. Він працює вже з попередньо відсортованим потоком.
На практиці це дає:
- менше втрат на пропущених листах;
- швидшу реакцію на критичні запити;
- менше когнітивної втоми;
- прозоріше управління inbox без сторонніх SaaS-посередників.
І це якраз той тип безсерверної автоматизації, який часто дає відчутний результат швидше за “великий AI-проєкт”.
Коли Apps Script уже достатньо, а коли пора далі
Якщо у вас один inbox, кілька зрозумілих категорій, невеликий обсяг листів і задача “пріоритезувати та підсвітити важливе”, Apps Script закриває її дуже добре. Але якщо вам потрібні складні маршрути, історія рішень, кілька поштових скриньок, окремий шар логування, дедуплікація, SLA-логіка або зв’язка з іншими внутрішніми сервісами, тоді краще дивитися в бік мікросервісів на Node.js для Google Workspace.
І саме тут проходить здорова межа: спочатку ви знімаєте рутину малим інструментом, а вже потім вирішуєте, чи справді потрібна повноцінна архітектура.
Що варто протестувати перед запуском “у сон”
Перед тим як довірити сценарію реальний inbox, перевірте три речі:
- чи не плутає модель “рахунок” і “питання”;
- чи не архівуєте ви занадто рано те, що людина ще має побачити;
- чи нормально працює Telegram-алерт саме для категорії
Важливо.
Найкращий стартовий режим — спочатку лише маркування без агресивного архівування. Коли побачите, що класифікатор поводиться стабільно, тоді вже можна додавати жорсткіші дії.
Тоді пошта перестає бути ранковим покаранням і починає працювати як система, яка підсвічує важливе раніше, ніж ви встигли втонути в шумі.
Останні статті

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

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

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

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

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

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