Автопілот для 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-алерт саме для категорії
Важливо.
Найкращий стартовий режим — спочатку лише маркування без агресивного архівування. Коли побачите, що класифікатор поводиться стабільно, тоді вже можна додавати жорсткіші дії.
Тоді пошта перестає бути ранковим покаранням і починає працювати як система, яка підсвічує важливе раніше, ніж ви встигли втонути в шумі.
Останні статті

CRM автоматизація: як прибирати дублікати лідів і ставити пріоритет менеджеру
CRM автоматизація часто починається не з купівлі великої CRM, а з менш романтичної задачі: прибрати дублікати лідів і зрозуміти, які заявки справді потребують швидкої ре…

AI помічник для продажів: summary клієнта перед дзвінком
Менеджер рідко провалює перший дзвінок через те, що не вміє говорити з клієнтом. Частіше проблема простіша: перед очима є тільки ім'я, телефон і короткий коментар із…

Автоматизація обробки замовлень: форма, Google Sheets, Telegram і статуси
Коли замовлення приходять із сайту, Google Forms, Telegram і дзвінків, хаос починається не в коді. Він починається в момент, коли незрозуміло, хто взяв заявку, чи підтве…

Автоматизація рахунків: як перетворити PDF і фото в дані Google Sheets
Рахунки, акти й квитанції рідко приходять у зручному форматі. Один постачальник надсилає PDF на пошту, другий кидає фото в Telegram, третій прикріплює скан до заявки. А…

Коли скрипт «втомився»: Налаштування моніторингу та сповіщень про помилки в Telegram
Найнеприємніший збій в автоматизації — не той, який “красиво впав”. А той, який стався тихо, без сигналу, і кілька днів жив собі окремим життям, поки ви були впевнені, щ…

Аналітик на стероїдах: Як змусити ШІ робити висновки з твоїх таблиць за 1 клік
У вас є таблиця на 500 рядків. Дата, товар, сума, клієнт, канал, ще якісь цифри. Формально дані є. Практично — це просто масив чисел, який не відповідає на головне питан…