Masz pytania lub problemy? Napisz w GitHub Discussions.

Google Sheets oferuje już funkcję GOOGLEFINANCE, a do szybkiego przeliczania sprawdzają się obie metody. Obie zwracają rynkowy kurs uśredniony, a poniższe formuły pasują wszędzie tam, gdzie używasz GOOGLEFINANCE. Różnica tkwi w źródle. GOOGLEFINANCE nie ujawnia źródeł ani nie pozwala na ich wybór. Frankfurter jest przejrzysty. Jeśli źródło musi być wiążące, wybierasz konkretną instytucję: kurs EBC dla unijnego VAT, NBP czy brazylijski PTAX. Dodatkowo zyskujesz stabilne dane historyczne.

Szybki start

Nie wymaga konfiguracji ani klucza API. Wstaw bieżący kurs za pomocą funkcji IMPORTDATA i endpointu CSV do komórki:

=IMPORTDATA("https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur")

Google Sheets wypełni tabelę kolumnami date,base,quote,rate. Kolumna date początkowo pojawi się jako liczba seryjna. Zaznacz ją i wybierz Formatuj, Liczba, Data, aby wyświetlić ją czytelnie. Wiele walut docelowych pobierzesz rozdzielając je przecinkami:

=IMPORTDATA("https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur,gbp,jpy")

Przeliczanie kwoty

IMPORTDATA zwraca kurs, a nie przeliczoną kwotę całkowitą. Pomnóż swoją kwotę przez komórkę z zaimportowanym kursem lub skorzystaj z poniższej funkcji niestandardowej.

Funkcja niestandardowa

Aby stworzyć funkcję wielokrotnego użytku =FRANKFURTER(), wystarczy krótki skrypt Apps Script. Otwórz w arkuszu Rozszerzenia, Apps Script, wklej ten kod i zapisz:

function FRANKFURTER(amount, from, to, date) {
  let url = `https://api.frankfurter.dev/v2/rate/${from}/${to}`;
  if (date) url += `?date=${Utilities.formatDate(date, "UTC", "yyyy-MM-dd")}`;
  const data = JSON.parse(UrlFetchApp.fetch(url).getContentText());
  return amount * data.rate;
}

Następnie wywołaj ją w dowolnej komórce:

=FRANKFURTER(100, "usd", "eur")

Podaj datę, aby pobrać kurs historyczny:

=FRANKFURTER(100, "usd", "eur", DATE(2020, 1, 2))

Wybór oficjalnego źródła

Domyślnie otrzymujesz kurs uśredniony ze wszystkich źródeł. Dodaj parametr providers, aby wybrać konkretną instytucję. Ma to kluczowe znaczenie dla podatków i księgowości: wiele organów podatkowych wymaga stosowania kursu własnego banku centralnego.

=IMPORTDATA("https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur&providers=ecb")
ECB
Kurs referencyjny Europejskiego Banku Centralnego, standard dla unijnego podatku VAT i ceł.
NBP
Narodowy Bank Polski. Rozliczenia podatku VAT i dochodowego w Polsce wymagają kursu NBP.
CNB
Czeski Bank Narodowy, referencja dla czeskiej księgowości i podatków.
BCB
Banco Central do Brasil PTAX, referencja dla brazylijskich umów i podatków.
BANXICO
Kurs FIX Banco de México do regulowania zobowiązań w dolarach amerykańskich.

Zobacz wszystkie źródła. Wybrana instytucja działa według własnego harmonogramu publikacji, dlatego jej najnowszy kurs może być opóźniony o jeden dzień w stosunku do kursu łączonego.

Szeregi historyczne

Użyj from dla zakresu dat oraz group=month, aby zagregować dane do 1 wiersza na miesiąc, gotowego do wykresów. Tutaj ujawnia się przewaga Frankfurter w arkuszach: długie, stabilne szeregi, które nie ulegają cichym zmianom.

=IMPORTDATA("https://api.frankfurter.dev/v2/rates.csv?from=1949-12-01&base=usd&quotes=gbp&providers=bbk&group=month")

Pobiera to kurs dolara amerykańskiego do funta brytyjskiego aż do 1949 roku z archiwum Deutsche Bundesbank. Historyczne fixingi Bundesbanku obejmują dolara wobec marki niemieckiej od 1948 roku oraz większość innych kursów dolara od 1949 do 1970 roku. Od 1999 roku kontrolę przejmuje Europejski Bank Centralny; nowoczesne szeregi czasowe korzystają ze standardowego kursu uśrednionego lub providers=ecb.