Przejdź do treści
Artykuły

AI w Arkuszach Google: własna formuła =AI() przez API w złotówkach

Gotowy skrypt Apps Script z funkcją =AI(), bezpieczne trzymanie klucza, cache przed podwójnymi opłatami, koszt 500 opisów na 5 modelach i limity Arkuszy.

6 min czytania
Logo Jantaris i napis AI w Arkuszach - formuła =AI() przez API

👁 118 przeczytań

AI w Arkuszach Google da się dodać jako zwykłą formułę: wpisujesz =AI("Napisz opis produktu"; A2) i komórka zwraca odpowiedź modelu. Wystarczy kilkanaście linijek w Apps Script i klucz API. Pokazuję cały skrypt, jak ustawić klucz, żeby nie wisiał w arkuszu, jak nie płacić dwa razy za to samo przy przeliczaniu i ile kosztuje 500 opisów produktów na kilku modelach, w złotówkach i z fakturą.

Po co formuła z AI w arkuszu

Arkusz to naturalne miejsce na powtarzalne zadania tekstowe. Kolumna z nazwami produktów i kolumna z opisami. Lista opinii klientów i kolumna z oceną nastroju. Tytuły artykułów i kolumna z kategorią. Kopiowanie każdego wiersza do czatu i z powrotem zajmuje godziny, a formuła przeciągnięta w dół robi to w kilka minut.

Gotowe dodatki z marketplace zwykle mają własny abonament i limit. Własna funkcja przez API kosztuje tyle, ile zużyte tokeny, a model wybierasz sam: tani do kategoryzacji, mocniejszy do tekstów, które ktoś będzie czytał.

Krok 1. Klucz API i jego zapisanie

Potrzebny jest klucz do API zgodnego z OpenAI. W moim serwisie Jantaris doładowujesz saldo BLIK-iem albo kartą od 40 zł i tworzysz w panelu osobny klucz z miesięcznym limitem wydatków. Faktura VAT wystawia się po każdym doładowaniu.

Klucza nie wpisuj do komórki ani do kodu. Każdy, kto ma dostęp do arkusza, zobaczyłby go. W edytorze Apps Script (Rozszerzenia, Apps Script) otwórz Ustawienia projektu, sekcję Właściwości skryptu, i dodaj właściwość JANTARIS_KEY z wartością sk-jt-....

Krok 2. Skrypt funkcji =AI()

W edytorze Apps Script wklej kod i zapisz projekt:

const URL =
  "https://jantaris.com/v1/chat/completions";
const MODEL = "gpt-6-luna";

/**
 * Odpowiedź modelu AI.
 * @customfunction
 */
function AI(polecenie, dane) {
  const tekst = dane
    ? polecenie + "\n\n" + dane
    : polecenie;
  const cache =
    CacheService.getScriptCache();
  const klucz = Utilities.base64Encode(
    Utilities.computeDigest(
      Utilities.DigestAlgorithm.MD5,
      MODEL + tekst));
  const zapis = cache.get(klucz);
  if (zapis) return zapis;

  const r = UrlFetchApp.fetch(URL, {
    method: "post",
    contentType: "application/json",
    muteHttpExceptions: true,
    headers: { Authorization:
      "Bearer " + PropertiesService
        .getScriptProperties()
        .getProperty("JANTARIS_KEY") },
    payload: JSON.stringify({
      model: MODEL,
      max_tokens: 300,
      messages: [{ role: "user",
                   content: tekst }]
    })
  });
  const j = JSON.parse(
    r.getContentText());
  if (!j.choices)
    return "BLAD " + r.getResponseCode();
  const odp =
    j.choices[0].message.content.trim();
  cache.put(klucz, odp, 21600);
  return odp;
}

W arkuszu wpisujesz na przykład:

=AI("Napisz opis produktu do
sklepu, 2 zdania, bez
przymiotników w stopniu
najwyższym:"; A2)

Funkcja skleja polecenie z zawartością komórki, wysyła do modelu i zwraca tekst. Parametr max_tokens ucina zbyt długie odpowiedzi, co przy setkach wierszy chroni rachunek.

Dlaczego w skrypcie jest cache

Arkusz przelicza formuły częściej, niż się wydaje: po otwarciu pliku, po zmianie sąsiednich komórek, po skopiowaniu zakresu. Bez zabezpieczenia każde przeliczenie to nowe zapytanie i nowa opłata za ten sam tekst.

Skrypt liczy skrót z modelu i treści zapytania i zapisuje odpowiedź w pamięci podręcznej na 6 godzin, czyli najdłużej, jak pozwala Apps Script. Ten sam wiersz w tym czasie nie kosztuje drugi raz. Gdy wynik ma zostać na stałe, zaznacz kolumnę, skopiuj i wklej jako same wartości. Wtedy formuła znika i nic się już nie przeliczy.

Nie przepłacaj za te subskrypcje

Prowadzę sklep z rocznymi dostępami do narzędzi AI - te same konta, o których piszę wyżej, tylko taniej niż w cenniku producenta.

Zobacz, co jest dostępne

Ile kosztuje 500 opisów produktów

Przyjmuję 300 tokenów wejścia (polecenie i dane produktu) i 150 tokenów wyjścia na wiersz. Dla 500 produktów to 150 tys. tokenów wejścia i 75 tys. wyjścia. Ceny brutto z publicznego katalogu API z 26.10.2026:

Modelwejście / wyjście za 1M500 opisów
GPT-6 Luna0,59 / 2,95 zł0,31 zł
DeepSeek V4 Flash0,74 / 1,48 zł0,22 zł
Gemini 3.6 Flash4,32 / 21,60 zł2,27 zł
Claude Sonnet 5.510,34 / 51,70 zł5,43 zł
GPT-6 Sol11,82 / 59,09 zł6,20 zł

Do kategoryzacji i krótkich etykiet wystarczy najtańszy model. Teksty, które trafią do klientów, zrób na próbce 20 wierszy w dwóch modelach i porównaj, zanim puścisz całą kolumnę. Model zmieniasz jedną linijką: const MODEL = "claude-sonnet-5.5";.

Limity, na które trafisz

  • 30 sekund na wywołanie. Funkcja niestandardowa w Arkuszach musi zakończyć się w tym czasie. Krótkie odpowiedzi mieszczą się bez problemu, długie teksty lepiej generować skryptem uruchamianym z menu, który zapisuje wyniki w pętli.
  • Dzienny limit zapytań UrlFetch. Na zwykłym koncie Google to 20 tys. wywołań dziennie, więcej niż potrzebuje większość arkuszy.
  • Wiele komórek naraz. Po przeciągnięciu formuły na tysiąc wierszy Arkusze wysyłają zapytania partiami i część komórek chwilę pokazuje „Wczytywanie”. To normalne.
  • Błąd w komórce. Skrypt zwraca „BLAD” z kodem HTTP: 401 to zły klucz, 402 za niskie saldo, 403 limit miesięczny klucza.

Wersja wsadowa: setki wierszy bez limitu 30 s

Przy dłuższych tekstach albo tysiącach wierszy lepiej działa skrypt uruchamiany z menu. Przechodzi po kolumnie A i wpisuje odpowiedzi do kolumny B jako zwykłe wartości, więc nic się potem nie przelicza:

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu("AI")
    .addItem("Opisy do kolumny B",
             "opisy")
    .addToUi();
}

function opisy() {
  const ark = SpreadsheetApp
    .getActiveSheet();
  const n = ark.getLastRow();
  for (let w = 2; w <= n; w++) {
    if (ark.getRange(w, 2)
          .getValue()) continue;
    const dane = ark.getRange(w, 1)
      .getValue();
    ark.getRange(w, 2).setValue(
      AI("Opis produktu, "
        + "2 zdania:", dane));
  }
}

Skrypt pomija wiersze, które mają już opis, więc po przerwaniu wystarczy uruchomić go jeszcze raz. Pojedyncze uruchomienie z menu może trwać do 6 minut na zwykłym koncie Google, więc bardzo długie listy przerób w kilku turach.

Przykłady formuł do skopiowania

=AI("Kategoria jednym słowem:
elektronika, dom, moda,
sport albo inne"; B2)

=AI("Nastrój opinii: pozytywny,
neutralny albo negatywny.
Tylko jedno słowo."; C2)

=AI("Przetłumacz na angielski,
zachowaj nazwy własne:"; D2)

W poleceniach do arkusza zawsze określaj format odpowiedzi: jedno słowo, lista do wyboru, liczba zdań. Bez tego model dopisuje wstępy w rodzaju „Oto opis:”, które potem trzeba czyścić w każdej komórce.

A co z Excelem

W Excelu ta sama zasada działa przez makro VBA albo Office Scripts, które wysyła zapytanie do tego samego adresu /v1/chat/completions. Kod jest dłuższy niż w Arkuszach, dlatego do szybkich eksperymentów prostsze są Arkusze Google. Opis endpointu czatu i pól odpowiedzi jest w dokumentacji czatu.

Gdy arkusz to tylko etap, a dane mają płynąć dalej, na przykład z formularza do sklepu, wygodniejszy będzie automat. Jak połączyć to samo API z n8n i Make, opisałem w tekście o automatach z API w n8n i Make.

Najczęstsze pytania

Jak dodać AI do Arkuszy Google?

Przez Apps Script: funkcja niestandardowa wysyła zawartość komórki do API modelu i zwraca odpowiedź. Klucz API trzymasz we właściwościach skryptu, a w arkuszu wpisujesz =AI("polecenie"; A2).

Ile kosztuje AI w arkuszu?

Tyle, ile zużyte tokeny. 500 krótkich opisów produktów to około 0,31 zł na GPT-6 Luna i 5,43 zł na Claude Sonnet 5.5, brutto (stan 26.10.2026).

Czy potrzebuję ChatGPT Plus?

Nie. Abonament ChatGPT nie daje dostępu do API. Formuła korzysta z klucza API rozliczanego za zużycie, bez abonamentu.

Dlaczego formuła liczy się kilka razy?

Arkusze przeliczają formuły po otwarciu pliku i zmianach w arkuszu. Skrypt z tego tekstu zapisuje odpowiedzi w pamięci podręcznej na 6 godzin, a gotowe wyniki warto wkleić jako wartości.

Czy dane z arkusza trafiają do trenowania modeli?

W moim serwisie polecenia i wyniki nie są używane do trenowania modeli. Danych osobowych klientów i tak nie wysyłaj do żadnego modelu bez podstawy prawnej.

Czytasz Promptowego częściej? Dodaj go do preferowanych źródeł w Google, a nowe teksty będą wyżej w Twoich wynikach.

Źródła i data sprawdzenia

Ceny i limity sprawdziłem 26.10.2026.

// Newsletter

Cały tydzień w AI, w jednym mailu

Wybrane premiery, narzędzia i analizy. Raz w tygodniu, prosto do skrzynki.

Zapisz się za darmo →
Za darmo. Wypisujesz się jednym kliknięciem.
// z sieci - nowe teksty w moich serwisach

Wszystkie moje projekty →

Piotr Olszewski

Piotr Olszewski

AUTOR I WYDAWCA

Piotr Olszewski - twórca i autor Promptowego, polskiego serwisu o sztucznej inteligencji. Codziennie śledzi premiery modeli, narzędzia i regulacje AI, i tłumaczy je prostym, konkretnym językiem.

// mapa strony

🛒 Sklep Kinetyka CapCut Pro 460 zł/rok Lovable Pro 450 zł/rok Replit Core 119 zł/rok Zobacz wszystko →
promptowy w liczbach 0tekstów w archiwum0newsów z ostatnich 7 dni0modeli wideo w obserwatorium0zagadek w grach
× ‹ powiększenie ›