criando funcão customizada no Google Sheets para substituir o GOOGLEFINANCE para conversão de moedas
· eiguike
no dia de ontem (26 de dezembro de 2024), o Google fez uma caquinha na hora de exibir os valores da moeda dolar (USD) basicamente exibiu o valor com 30 cents há mais convertidos em BRL.
pode não parecer muito, mas para a moeda do Brasil (BRL) que é desvalorizada, qualquer aumento desse valor pode trazer um grande impacto, seja em inflação, investimentos, viagens e etc. e aí está o problema, muitos dos sites de comércio/serviços utilizam do site do Google para avaliar o preço, e provavelmente podem ter feito algumas negociacṍes não tão favoráveis visto que o valor real não era aquele que estava sendo exibido.
e para evitar problemas maiores, o Google basicamente desativou a funcionalidade de conversão de moedas do próprio site e também no próprio Google Sheets
, se você utiliza a função GOOGLEFINANCE
, provavelmente neste dia ficou com todas as planilhas com erro.
e por quê deste artigo?
bom…
eu tenho uma planilha de investimentos que utilizo já faz uns 5 anos desde que comecei minha jornada de investimentos, e corriqueiramente sempre tenho esses problemas do GOOGLEFINANCE
retornar com erro.
e hoje foi o dia para tentar contornar de vez por toda esse problema dessa função retornar erro, ou pelo menos, contornar de uma forma que quebre menos.
qual é a ideia da solução?
na minha planilha eu já utilizo corriqueiramente o Google Scripts para criar pequenas funcionalidades de automação, se você tem experiência com Javascript
será um mão na roda, dessa forma, basicamente criarei uma função customizada que consegue extrair o valor da conversão da seguinte forma:
=CUSTOMFINANCE("USDBRL")
instruções
- criar uma conta no OpenExchangeRates
- utilizaremos um serviço de API oferecido pela OpenExchangeRates nele você consegue todos os valores das moedas convertidos pelo dolar
- estamos utilizando o plano
free
deste serviço, dessa forma, implementaremos um mecanismo de cache de 1 hora para não termos que toda hora consultar os valores de conversão
-
crie um app id e salve
-
na sua planilha do Google, vá em Extensions -> Apps scripts
- adicione o seguinte código e substituia os valores necessários:
/**
* Retorna o valor da moeda convertida.
* @param {text} input Ex: "USDBRL", "BRLUSD", "USDDKK".
* @return A conversão atual da moeda requisitada.
* @customfunction
*/
function CUSTOMCURRENCY(input) {
const ONE_HOUR_IN_SECONDS = 3600;
const API_KEY = "SUBSTITUA_ESSE_VALOR_AQUI";
const openExchangeCurrencyApiUrl = `https://openexchangerates.org/api/latest.json?app_id=${API_KEY}`;
const cache = CacheService.getScriptCache();
let currencyText = cache.get("currency");
if (!currencyText) {
currencyText = UrlFetchApp.fetch(openExchangeCurrencyApiUrl, {
method: "get",
contentType: "application/json"
}).getContentText();
cache.put("currency", currencyText, ONE_HOUR_IN_SECONDS);
}
const currencyObject = JSON.parse(currencyText);
const currencies = input.match(/.{1,3}/g);
if (currencies.length != 2) {
return 0;
}
const [denominator, numerator] = currencies;
return (
currencyObject.rates[numerator] / currencyObject.rates[denominator]
);
}
-
adicione na sua planilha o comando
-
seja feliz sem o
GOOGLEFINANCE
para conversão de moedas!