Google Sheets
O Google Sheets tem o GOOGLEFINANCE para cotações de câmbio, e para uma conversão rápida ele serve bem. O problema é a fonte: uma combinação de mercado de origem não declarada, que você não consegue inspecionar nem escolher. O Frankfurter combina cotações de bancos centrais que você pode inspecionar e, quando a fonte precisa ser exata, você pode fixar uma única autoridade: a taxa de referência do BCE para o IVA da UE, o NBP da Polônia ou a PTAX do Brasil. O histórico de um provedor fixado fica exatamente como foi publicado. As fórmulas abaixo entram onde você colocaria o GOOGLEFINANCE.
Início rápido
Sem configuração e sem chave de API. Coloque uma cotação atual numa célula com IMPORTDATA e o endpoint CSV:
=IMPORTDATA("https://api.frankfurter.dev/v2/rates.csv?base=usd"es=eur") O Sheets preenche uma pequena tabela date,base,quote,rate. A coluna date chega como número de série. Selecione a coluna e escolha Formatar, Número, Data para ver as datas. Peça várias moedas de cotação de uma vez, separadas por vírgula:
=IMPORTDATA("https://api.frankfurter.dev/v2/rates.csv?base=usd"es=eur,gbp,jpy")Converter um valor
IMPORTDATA retorna a cotação, não o total convertido. Multiplique o valor pela célula da cotação importada ou use a função personalizada abaixo para resolver tudo numa chamada só.
Função personalizada
Para ter uma função =FRANKFURTER() reutilizável, adicione um pequeno Apps Script. Na planilha, abra Extensões, Apps Script, cole este código e salve:
/**
* Converte um valor entre moedas, pela cotação de hoje ou de uma data.
* @customfunction
*/
function FRANKFURTER(amount, from, to, date) {
let url = `https://api.frankfurter.dev/v2/rate/${from}/${to}`;
if (date) {
const tz = SpreadsheetApp.getActive().getSpreadsheetTimeZone();
url += `?date=${Utilities.formatDate(date, tz, "yyyy-MM-dd")}`;
}
const data = JSON.parse(UrlFetchApp.fetch(url).getContentText());
return amount * data.rate;
}Depois, use em qualquer célula:
=FRANKFURTER(100, "usd", "eur")Passe uma data para obter uma cotação histórica:
=FRANKFURTER(100, "usd", "eur", DATE(2020, 1, 2))Fixar uma fonte oficial
Por padrão, você recebe a combinação de todas as fontes. Adicione providers para fixar uma única autoridade. Isso importa para impostos e contabilidade: muitos países exigem a taxa publicada pelo próprio banco central na conversão de valores em moeda estrangeira.
=IMPORTDATA("https://api.frankfurter.dev/v2/rates.csv?base=usd"es=eur&providers=ecb")ECB- Taxa de referência do Banco Central Europeu, o padrão para IVA e alfândega na UE.
NBP- Narodowy Bank Polski. Na Polônia, o IVA e o imposto de renda das empresas (CIT) são convertidos pela taxa do NBP.
CNB- Fixing do Banco Nacional Tcheco, usado na contabilidade e nos impostos da República Tcheca.
BCB- PTAX do Banco Central do Brasil, a referência para contratos e tributos no Brasil.
BANXICO- Taxa FIX do Banco de México, usada para liquidar obrigações em dólar americano.
Veja todas as fontes. Uma fonte fixada segue o próprio calendário de publicação, então a cotação mais recente dela pode ficar um dia atrás da cotação combinada mais recente.
Séries históricas
Use from para um intervalo de datas e group=month para condensar tudo em uma linha por mês, pronto para virar gráfico. O histórico combinado pode mudar um pouco quando chegam dados novos, então fixe um provedor quando os valores não puderem mudar.
=IMPORTDATA("https://api.frankfurter.dev/v2/rates.csv?from=1949-12-01&base=usd"es=gbp&providers=bbk&group=month") Isso traz o dólar americano contra a libra desde 1949, direto do arquivo do Deutsche Bundesbank. Dá para ver a paridade fixa da libra em US$ 2,80 ficar estável por anos até ser rompida em 1967. O histórico mais antigo vem dos fixings do Bundesbank em Frankfurt: o dólar contra o marco desde 1948 e a maioria dos outros pares com o dólar de 1949 a 1970. O Banco Central Europeu assume a partir de 1999, então uma série moderna contínua usa a combinação padrão ou providers=ecb.