Jak pobierać dane o kursach walut z API NBP w Google Sheets
Po co mi to?
Po pierwsze, żeby nie wchodzić co chwilę na stronę NBP w poszukiwaniu kursów walut - szczególnie historycznych - zajmuje to sporo czasu. Po drugie, Arkusze Google mają co prawda funkcję Google Finance, ale to są „kursy z internetu” – fajne na szybko, ale nieoficjalne.
W Polsce, jeśli robisz rozliczenia, faktury, księgowość czy inne zabawy z fiskusem – obowiązuje kurs Narodowego Banku Polskiego. To znaczy, że jak policzysz wartość faktury na podstawie Google Finance, to będzie to tak samo akuratne, jak obiecywane na przyszły rok stopy procentowe - czyli "być może". NBP ma swoje oficjalne API, które zwraca kursy z tabel A, B, C – i właśnie tego powinniśmy używać.
Jak to zrobić krok po kroku
- Otwórz Arkusz Google
Wejdź wRozszerzenia→Apps Script.
Otworzy Ci się edytor kodu (trochę jak notatnik dla nerdów). - Wklej poniższy kod
/**
* Gets currency rate from NBP API
*
* @param {CUR} currency The currency code to check (USD, GBP, EUR).
* @param {DATE} date Date to check in YYYY-MM-DD format.
* @return NBP exchange rate for specified day.
* @customfunction
*/
function nbp(currency, date) {
var dateStr = Utilities.formatDate(date, "GMT+1", "yyyy-MM-dd");
var url = "http://api.nbp.pl/api/exchangerates/rates/a/" + currency + "/" + dateStr + "/?format=json";
try {
var response = UrlFetchApp.fetch(url);
var responseObject = JSON.parse(response);
var rate = (responseObject.rates[0].mid);
return rate;
} catch (e) {
Logger.log(e);
return "Brak notowania";
}
}
// from arkuszowy.pl- Zapisz projekt (np. nazwij go
NBP Kursy) i gotowe! Właśnie utworzyłeś swoją pierwszą, customową funkcję! - Jak używać?
W arkuszu możesz teraz pisać formułę tak, jak zwykłe=SUMA(...), tylko zamiast sumowania – pobierasz kurs. Przykłady:- =nbp("USD"; "2025-08-29") → kurs dolara z 29 sierpnia 2025
- =nbp("EUR"; D1) → kurs euro dla daty zapisanej w komórce D1
- Efekt uboczny?
Masz w arkuszu oficjalny kurs z NBP, czyli taki, którego możesz użyć w rozliczeniach.
Nie dostaniesz po łapach od księgowej ani od fiskusa.
A co jeśli wyskoczy „Brak notowania”?
Spokojnie, NBP nie publikuje kursów w weekendy i święta, więc jeśli podasz np. niedzielę – dostaniesz pustkę. Wystarczy cofnąć się o jeden dzień roboczy.
I to tyle. Masz własny, darmowy i oficjalny kurs walut w Google Sheets – prosto z NBP.
