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

Аналітик на стероїдах
Аналітик на стероїдах

Саме в цьому місці більшість бізнесів або відкладає аналіз “на потім”, або витрачає пів дня на зведені таблиці, графіки й ручні спроби зрозуміти, чому у вівторок усе впало, а один товар раптом вистрілив. Але якщо вже у вас є дані, логічно дати їм нормальний інтерфейс: не тільки дивитися на таблицю, а й буквально запитати її — де ми втрачаємо гроші, що продається найкраще і що варто перевірити просто зараз?

У чому тут основна ідея

Сценарій дуже простий: у Google Таблиці з’являється кнопка «Проаналізувати обране». Ви виділяєте діапазон, натискаєте пункт меню, а скрипт бере ці дані, формує з них зрозумілий для GPT контекст і повертає короткий текстовий звіт.

Тобто ми не будуємо “великий BI-проєкт”, а додаємо до таблиці маленький аналітичний шар. Саме такі дрібні автоматизації часто дають найшвидший ефект: не замінюють аналітика, а прибирають тупу ручну частину перед тим, як починається нормальне мислення.

Якщо вам уже близька логіка GPT у Google Sheets, то це її наступний крок: не просто генерація тексту в клітинці, а вже інтерпретація масиву даних як бізнес-ситуації.

Які дані варто давати на вхід

Щоб ШІ не фантазував на порожньому місці, таблиця має бути хоча б мінімально охайною. Найкраще працює структура, де є зрозумілі колонки:

  • дата;
  • товар;
  • сума;
  • клієнт;
  • за потреби — канал, менеджер, статус, маржа.

Чим чистіші поля, тим кращий вихід. Якщо в одній колонці у вас і дати, і коментарі, і “не пам’ятаю що це було”, жоден хороший промпт це не врятує. Тут правило просте: ШІ добре бачить закономірності, але не любить безлад.

Додаємо кнопку в меню таблиці

Найзручніший формат для такого сценарію — не окрема формула, а кастомне меню. Користувач відкрив таблицю, виділив блок даних і натиснув одну дію в інтерфейсі. Саме для цього й потрібен onOpen().

function onOpen() {
  const ui = SpreadsheetApp.getUi();

  ui.createMenu('🤖 AI-Аналітика')
    .addItem('Проаналізувати обране', 'runAiAnalysis')
    .addToUi();
}

Після цього у верхньому меню таблиці з’явиться новий пункт. І це дуже важливий UX-момент: автоматизація виглядає не як “десь там у коді щось працює”, а як зрозуміла дія прямо в таблиці.

Як зібрати дані з виділеного діапазону

Як зібрати дані з виділеного діапазону
Як зібрати дані з виділеного діапазону

Далі все зводиться до трьох кроків:

  1. взяти активний діапазон;
  2. перетворити його в читабельний формат;
  3. відправити в OpenAI з чіткою роллю й задачею.

Ось базовий варіант:

function runAiAnalysis() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getActiveRange();
  const values = range.getValues();

  const dataString = JSON.stringify(values);

  const prompt = `
Ти — фінансовий директор.
Проаналізуй цей масив даних.
Знайди аномалії, виділи топ-3 товари за прибутковістю
та дай одну пораду щодо оптимізації витрат на наступний місяць.

Дані:
${dataString}
  `;

  const report = callOpenAI(prompt);

  SpreadsheetApp.getUi().alert(
    'Звіт аналітика',
    report,
    SpreadsheetApp.getUi().ButtonSet.OK
  );
}

На цьому етапі головне зрозуміти одну річ: GPT не “бачить таблицю”, він бачить масив. Тому якість аналізу напряму залежить від того, як ви “згодували” ці дані.

Як правильно годувати таблицю ШІ

Найчастіша помилка — бездумно відправити весь getValues() і чекати магії. Формально це працює, але якість висновків сильно зростає, якщо ви додаєте хоч трохи контексту:

  • що це за бізнес;
  • які колонки що означають;
  • що вважати проблемою;
  • який саме формат відповіді ви хочете.

Тобто хороший промпт — це не “проаналізуй таблицю”, а щось на кшталт:

Ти — фінансовий директор інтернет-магазину.
У таблиці є дата продажу, товар, сума та клієнт.
Твоє завдання:
1. знайти аномалії,
2. виділити топ-3 товари за прибутковістю,
3. пояснити можливу причину просідання,
4. дати одну практичну пораду на наступний місяць.
Відповідь дай коротко, без води, у вигляді 3–5 пунктів.

Ось у цьому і є “секретний соус”: не просто передати дані, а поставити роль і рамку. Тоді ШІ поводиться не як чат, а як вузький аналітичний модуль.

Що виходить на практиці

У найпростішому варіанті результат можна показувати через alert. Це не ідеальний формат для великої аналітики, але для швидкого інсайту працює чудово: натиснули кнопку, отримали 3–4 короткі висновки, закрили вікно, пішли приймати рішення.

Для більш “робочого” сценарію можна записувати звіт у сусідню вкладку, окрему клітинку або навіть штовхати його в Google Sheets + Telegram/Slack, якщо вам важливо, щоб висновок одразу прилітав у командний канал.

Реальний кейс автора: коли цифри є, а відповіді немає

Я прийшов до цього сценарію не тому, що “хотів ще одну AI-фічу”, а через дуже приземлену проблему. У мене був масив по продажах і витратах, де все наче було на місці: дати, суми, товари, джерела. Але коли треба було швидко відповісти на питання “де просіли”, “що реально тягне гроші” і “де є дивна аномалія”, таблиця давала тільки цифри, а не висновок.

Перший підхід був класичний: фільтри, сортування, зведені таблиці, ручні порівняння. На таке легко йшло від 40 хвилин до півтори години, якщо даних було вже кілька сотень рядків і потрібно було не просто “подивитися”, а щось зрозуміти. Саме це й підштовхнуло зробити кнопку аналізу в самій таблиці.

Після того як я виніс сценарій у Apps Script і почав проганяти виділений діапазон через GPT із нормально заданою роллю, первинний аналітичний огляд стискався буквально до 10–20 секунд. Не тому, що модель замінила аналіз повністю, а тому, що вона одразу підсвічувала: де аномалія, що вибивається, які 2–3 точки варто перевірити першими. На практиці це забрало найбільш тупу частину роботи — “дивитися на таблицю і не бачити нічого”.

Де тут справжня вигода для бізнесу

Де тут справжня вигода для бізнесу
Де тут справжня вигода для бізнесу

Головна цінність не в тому, що ШІ “вміє аналізувати”. А в тому, що він скорочує час між появою даних і першою корисною управлінською думкою.

На практиці це означає:

  • менше часу на ручний первинний аналіз;
  • швидший пошук аномалій;
  • кращу реакцію на просідання або перекоси;
  • більше рішень на основі даних, а не інтуїції.

І це якраз той випадок, де маленька автоматизація часто дає результат швидше, ніж великий BI-проєкт із дашбордами, до якого “ще треба дійти”.

Коли цього вже мало

Для маленьких і середніх команд така кнопка “Аналізуй” — дуже хороша точка входу. Але якщо вам потрібні регулярні звіти за розкладом, багатокрокова логіка, історія змін, кілька джерел даних або окремий аналітичний сервіс, тоді Apps Script уже починає бути тісним.

У такому випадку логічний наступний крок — мікросервіси на Node.js для Google Workspace, де ви вже не просто тиснете кнопку в таблиці, а будуєте окремий контур автоматизації звітності та інсайтів.

Практичний підсумок

Таблиці давно вміють зберігати дані. Але цього мало. Бізнесу потрібні не просто рядки й колонки, а короткі, зрозумілі відповіді: що просіло, що росте, що перевірити далі.

І якщо це можна отримувати за 10 секунд замість кількох годин ручної аналітики, то ваші дані нарешті починають говорити людською мовою.