Cennik w Arkuszach Google to jeden arkusz z pięcioma kolumnami: Kod, Nazwa, Zakup, Cena i Stan. Cenę sprzedaży liczy formuła z kursu i narzutu, cenniki hurtowni wpadają przez IMPORTRANGE albo IMPORTDATA, krótki skrypt Apps Script codziennie wpisuje kurs średni NBP, a gdy ceny ma zmieniać Twój sklep lub aplikacja — służy do tego Google Sheets API. Tak da się pracować do kilku tysięcy pozycji i kilku hurtowni.
Błędy zwykle dotyczą dostępu i skali. Roboczy plik udostępniony klientom przez link pokazuje im ceny zakupu na sąsiedniej karcie, a funkcje importu nie odświeżają się od razu i trafiają w limity Google. Dalej: struktura, formuła na przykładzie, podłączenie hurtowni, dostęp dla klientów, automatyzacja przez skrypt i API oraz moment, w którym arkusz przestaje wystarczać.
Kiedy ludzie szukają cennika w Arkuszach Google
Zwykle to mały sklep albo hurtownia, której cennik żyje w Excelu na jednym komputerze. Handlowcy mają widzieć aktualne ceny, klienci — otwierać cennik z linku, a kursy i ceny dostawców mają się aktualizować same. Stąd zapytania „importrange”, „google sheets api” i „jak połączyć dwa arkusze Google”.
„Jaką formułę wpisać” rozwiążesz w dziesięć minut. Trudniejsze pytania brzmią inaczej: jak nie pokazać klientom cen zakupu i co zrobić, gdy hurtownia przestawi kolumny.
Jakie kolumny potrzebne są w cenniku
Minimum to pięć kolumn. Kurs i narzut trzymaj w osobnych komórkach, żeby zmieniać je w jednym miejscu.

| Kolumna | Co zawiera | Skąd się bierze |
|---|---|---|
| A — Kod | Kod produktu do wyszukiwania i dopasowania cenników | hurtownia |
| B — Nazwa | Twoja nazwa produktu dla klientów | Ty |
| C — Zakup $ | Cena hurtowni w walucie cennika | hurtownia |
| D — Cena, zł | Cena sprzedaży — tylko formuła | formuła |
| E — Stan | „jest”, „na zamówienie”, „brak” — z listy rozwijanej | hurtownia |
| H1, H2 | Kurs i narzut | skrypt i Ty |
Kolumnę „Stan” zrób listą rozwijaną (Dane → Sprawdzanie poprawności danych). Wtedy „tak”, „+” i „dost.” się nie mieszają, a filtry działają.
Jak policzyć cenę sprzedaży formułą
Cena sprzedaży = zakup × kurs × (1 + narzut), zaokrąglona w górę do końcówki ,99. W H1 jest kurs średni NBP (złotych za dolara), w H2 — narzut. W polskiej wersji Arkuszy funkcja zaokrąglania w górę nazywa się ZAOKR.GÓRA (po angielsku ROUNDUP), argumenty oddziela średnik, a część dziesiętną — przecinek. W D2:
=ZAOKR.GÓRA(C2*$H$1*(1+$H$2)+0,01;0)-0,01
Przykład poglądowy do arytmetyki, liczby nie są cenami rynkowymi. Hurtownia liczy 20 $, kurs w H1 to 4,00 zł za dolara, narzut w H2 — 25%.
- 20 × 4,00 = 80,00 zł — zakup w złotych;
- 80,00 × 1,25 = 100,00 zł — z narzutem;
- 100,00 + 0,01 = 100,01 → w górę do 101 → 101 − 0,01 = 100,99 zł.

Dodatek +0,01 pilnuje, żeby okrągła cena, jak 100,00 zł, nie spadła do 99,99 zł — poniżej Twojego narzutu. Jeśli narzut zależy od kategorii, dodaj kolumnę „Narzut” i wskaż ją w formule zamiast $H$2. Jaki narzut pokrywa dostawę i prowizje, sprawdzisz w artykule marża a narzut: wzory i przykład.
Jak wciągnąć cennik hurtowni do swojego arkusza
To zależy od tego, jak hurtownia wysyła cennik: arkusz Google — IMPORTRANGE, link do pliku CSV — IMPORTDATA, feed XML — IMPORTXML. Nazwy tych funkcji w polskiej wersji Arkuszy są takie same jak w angielskiej.

| Cennik hurtowni | Funkcja | O czym pamiętać |
|---|---|---|
| Arkusz Google | =IMPORTRANGE("link";"Ceny!A2:E") | Raz kliknij „Zezwól na dostęp”; do 10 MB danych na żądanie |
| Link do pliku CSV lub TSV | =IMPORTDATA("link") | Działa tylko z bezpośrednim linkiem do pliku |
| Feed XML | =IMPORTXML("link";"//item/price") | Drugi argument to zapytanie XPath do potrzebnych węzłów |
Import pobiera zakres po adresie, a nie po nazwie kolumny. Jeśli hurtownia wstawi kolumnę „Marka” między kod a cenę, Twoja kolumna „Zakup” wypełni się nazwami marek — a formuła ceny po cichu zwróci błąd albo bzdurę. Trzymaj import na osobnej karcie i sprawdzaj nagłówki po każdej zmianie cennika.
Jak dać klientom dostęp do cennika
Daj klientom osobny plik, nie roboczy. „Każda osoba mająca link → Przeglądający” otwiera cały arkusz, razem z kartą cen zakupu.
- Utwórz plik „Cennik dla klientów” i wciągnij do niego z roboczego pliku przez IMPORTRANGE tylko Kod, Nazwę, Cenę i Stan.
- Udostępnij → „Każda osoba mająca link” → „Przeglądający”.
- Albo Plik → Udostępnij → „Opublikuj w internecie”: opublikowana wersja aktualizuje się sama po zmianach w oryginale, z opóźnieniem do kilku minut.
Dla różnych grup klientów, na przykład hurtu i detalu, rób osobne pliki z osobnymi kolumnami cen: linki krążą dalej.
Jak automatycznie aktualizować kurs i ceny
Kurs średni NBP wpisuj do arkusza skryptem Apps Script uruchamianym według harmonogramu. NBP aktualizuje tabelę A kursów średnich w każdy dzień roboczy między 11:45 a 12:15, więc ceny nie skaczą w ciągu dnia jak przy notowaniu rynkowym z GOOGLEFINANCE. Otwórz Rozszerzenia → Apps Script i wklej funkcję:
function aktualizujKurs() {
var url = 'https://api.nbp.pl/api/exchangerates/rates/a/usd/?format=json';
var dane = JSON.parse(UrlFetchApp.fetch(url).getContentText());
SpreadsheetApp.getActive().getSheetByName('Cennik')
.getRange('H1').setValue(dane.rates[0].mid);
}
Potem w edytorze skryptu: Reguły → Dodaj wyzwalacz → funkcja aktualizujKurs → źródło zdarzenia oparte na czasie → codziennie, przedział 13:00–14:00. Aktywatory oparte na czasie mogą działać od co minutę do raz w miesiącu; dokładna godzina jest nieco losowa w obrębie wybranej godziny. Dla euro zamień w linku usd na eur. Jeśli umowa z hurtownią wskazuje inny kurs, używaj tego z umowy.
Skrypt może też co noc pobrać cennik hurtowni z linku i zapisać go na karcie. Arkusz jest wtedy jedynym miejscem, gdzie liczysz ceny — ale wciąż odświeża się tylko tak często, jak pozwalają limity z tabeli niżej.
Google Sheets API: kiedy jest potrzebne i jak zacząć
Google Sheets API to interfejs, przez który Twój program — sklep, aplikacja, skrypt w Pythonie na serwerze — czyta i zapisuje komórki arkusza bez otwierania go w przeglądarce. Potrzebne jest wtedy, gdy ceny mają płynąć między arkuszem a systemem spoza Google; jeśli wszystko dzieje się w samym arkuszu, wystarczy Apps Script.
- Utwórz projekt w Google Cloud i włącz w nim Google Sheets API.
- Wybierz dane logowania. Klucz API daje tylko anonimowy dostęp do danych publicznych. Identyfikator klienta OAuth — gdy program działa w imieniu osoby i prosi ją o zgodę. Konto usługi — gdy program działa sam, na przykład na serwerze sklepu.
- Kontu usługi udostępnij arkusz na jego adres e-mail, jak zwykłemu użytkownikowi: role uprawnień Google Cloud nie dają dostępu do plików w Dysku.
- Zainstaluj bibliotekę klienta Google dla swojego języka (dla Pythona Google podaje pakiet
google-api-python-client) i odczytaj zakres, na przykładCennik!A2:E.
Standardowe korzystanie z Google Sheets API jest bezpłatne. Limity: 300 żądań odczytu i 300 zapisu na minutę na projekt oraz po 60 na minutę na użytkownika w projekcie. Google zapowiada, że przekroczenie limitów ma być płatne z konta rozliczeniowego Google Cloud jeszcze w 2026 roku. Pojedyncze żądanie, które przetwarza się dłużej niż 180 sekund, kończy się błędem, a Google zaleca ładunek do 2 MB — dlatego zapisuj cennik paczkami (jedno żądanie na zakres), a nie komórka po komórce.
Gdzie kończą się możliwości arkusza
Arkusz trafia na limit odświeżania, a nie wierszy: funkcje importu odświeżają się co 30–60 minut, a skrypty mają dzienny limit czasu działania.

| Co | Limit |
|---|---|
| Rozmiar arkusza | do 20 mln komórek lub 100 MB |
| IMPORTRANGE | do 10 MB danych na żądanie; odświeżanie co 30 minut |
| IMPORTDATA, IMPORTXML, IMPORTHTML | odświeżanie co godzinę |
| GOOGLEFINANCE | opóźnienie do 20 minut |
| Uruchomienie Apps Script | do 6 minut na wykonanie |
| Reguły, konto Gmail (prywatne) | do 90 minut działania dziennie |
| Wywołania UrlFetchApp, konto Gmail (prywatne) | do 20 000 dziennie |
| Google Sheets API | 300 odczytów i 300 zapisów na minutę na projekt, 60 na użytkownika |
Praktyczne sygnały, że arkusz już nie nadąża:
- masz więcej niż trzy–cztery hurtownie, każdą z własnymi kolumnami, walutą i oznaczeniami stanów;
- ten sam produkt jest w kilku cennikach, a cenę wybierasz ręcznie;
- ceny w sklepie mają się zmieniać częściej niż raz na godzinę;
- ktoś co tydzień spędza godziny na naprawianiu formuł po zmianie cennika.
Kiedy oddać cenniki programowi
Gdy masz kilka hurtowni, a ich ceny mają trafiać do sklepu bez ręcznego sprawdzania formuł.
Elbuz pobiera cennik hurtowni prosto z arkusza Google z linku — także z prywatnego, który hurtownia udostępniła na adres e-mail usługi Elbuz — a do tego z e-maila, FTP lub strony, o ustalonej godzinie. Kolumny rozpoznaje po nagłówkach według swojego słownika, a gdy hurtownia przestawi kolumny, ostrzega o tym przy imporcie i proponuje nowe adresy jednym przyciskiem; kurs (także z tabeli A NBP), narzut i zaokrąglenie ustawiasz regułami. Więcej na stronie integracja z hurtowniami: ceny i stany.
Komu się nie przyda: przy jednej hurtowni i kilkuset pozycjach wystarczą Arkusze Google z formułą i skryptem kursu.
Cenniki z Arkuszy Google w ElbuzKolumny, kurs i narzut według reguł, 14 dni za darmo
Najczęstsze pytania
Czy Google Sheets API jest darmowe?
Tak, standardowe korzystanie jest bezpłatne w limicie 300 żądań na minutę na projekt i 60 na użytkownika. Google zapowiada opłaty za przekroczenie limitów jeszcze w 2026 roku.
Jak uzyskać dostęp do Google Sheets API?
Włącz Google Sheets API w projekcie Google Cloud, utwórz dane logowania (OAuth albo konto usługi) i — przy koncie usługi — udostępnij arkusz na jego adres e-mail. Kroki są w sekcji Google Sheets API.
Jak połączyć dwa arkusze Google?
Funkcją IMPORTRANGE: podaj link do arkusza i zakres, na przykład "Ceny!A2:E", a przy pierwszym użyciu kliknij „Zezwól na dostęp”.
Jak często odświeża się IMPORTRANGE i IMPORTXML?
Według pomocy Google IMPORTRANGE co 30 minut, a IMPORTDATA, IMPORTXML i IMPORTHTML co godzinę. Szybciej — tylko skryptem albo programem.
Czy da się zautomatyzować Arkusze Google?
Tak: Apps Script z aktywatorem opartym na czasie uruchamia funkcję według harmonogramu, na przykład codziennie wpisuje kurs NBP. Kod jest w sekcji automatyczna aktualizacja kursu.
Jak udostępnić cennik klientom tylko do odczytu?
Zrób osobny plik dla klientów bez cen zakupu i udostępnij go jako „Każda osoba mająca link → Przeglądający” albo opublikuj przez Plik → Udostępnij → „Opublikuj w internecie”.
Ile danych zmieści arkusz Google?
Do 20 mln komórek lub 100 MB na arkusz. Dla cennika ważniejsze są limity odświeżania importu i czasu działania skryptów.
Źródła
- Pomoc Edytorów Dokumentów Google: IMPORTRANGE, IMPORTDATA, IMPORTXML, ZAOKR.GÓRA (ROUNDUP), ustawienia przeliczania i odświeżanie funkcji importu, publikowanie pliku w internecie, rozmiary plików w Dysku Google.
- Google for Developers: limity i ceny Google Sheets API, Google Sheets API — szybki start w Pythonie, tworzenie danych logowania, limity Apps Script, reguły czasowe.
- Narodowy Bank Polski: API NBP — kursy walut, terminy publikacji kursów walut.
Sprawdzono 01.11.2026.
