Skip to content

Instantly share code, notes, and snippets.

@paulopatto
Last active January 18, 2024 23:57
Show Gist options
  • Save paulopatto/533d1d11f76c60aa941e to your computer and use it in GitHub Desktop.
Save paulopatto/533d1d11f76c60aa941e to your computer and use it in GitHub Desktop.
Converter taxa de cambio entre Moedas com Google SpreadSheet

Cotação de moedas com Planilhas do Google SpreadSheet

Hoje enquanto eu tentava criar minha calculadora de importação de produtos (com tributos, Taxa ilegal de processamento de encomendas internacionais e IOF). Com isso precisava de dados de conversão autmática de valores em Dollar americano para o Real brasileiro (USD -> BRL). A melhor solução que encontrei foi efetuar a pesquisa de cotação na url do google finance convert em https://www.google.com/finance/converter?a=1&from=USD&to=BRL. Bem tendo a url que nos retorna um documento HTML vamos pegar o dados com a função IMPORTXML

ImportXML(url; xpath query)

Importa dados de qualquer um dos vários tipos de dados estruturados, incluindo XML, HTML, CSV, TSV e XML de feeds RSS e Atom.

Com isso tenho o resultado como texto, ai tive de converter a planilha para formatação U.S.A para usar ponto como separador decimal e usar a formula de regex [0-9]*\.[0-9]+[0-9]+para extrair apenas o valor numérico. Minha formula completa ficou assim:

=value(
 RegexExtract(
  ImportXML(
   "https://www.google.com/finance/converter?a=1&from=USD&to=BRL", 
   "//*[@id='currency_converter_result']/span"
  ), 
  "[0-9]*\.[0-9]+[0-9]+"
 )
)
@jimmymaximus5130
Copy link

jimmymaximus5130 commented Sep 17, 2017

Olá! Descobri duas novas formas de obter esses resultados. Uma é a adaptação deste código que você disponibilizou:
=(valor_em_dollar*(value(RegexExtract(ImportXML("https://finance.google.com/finance/converter?a=1&from=USD&to=BRL";"//*[@id='currency_converter_result']/span");"[0-9]*\.[0-9]+[0+9]+"))/1000))

e a outra maneira é uma função bem simples:
=GoogleFinance("CURRENCY:USDBRL" ; "average")

Espero ter ajudado quem está tentando fazer

@dbalduini
Copy link

Isso era exatamente o que precisava, muito obrigado! 👍

=GoogleFinance("CURRENCY:USDBRL" ; "average")

@hugonotnice
Copy link

hugonotnice commented Jan 18, 2020

Funcionou bem, obrigado! Formula que usei:

=GoogleFinance("CURRENCY:USDBRL" ; "average")

@ErnandesCastro
Copy link

Ou ainda: =GOOGLEFINANCE("USDBRL")

Copy link

ghost commented Apr 2, 2021

Obrigado!!!
Era bem o que precisava..
=GoogleFinance("CURRENCY:USDBRL" ; "average")

@IsaacMeirelles
Copy link

Valeu Jimmy, para quem precisar de Euro:
=GoogleFinance("CURRENCY:EURBRL" ; "average")

@renan-batista
Copy link

E de ontem como pego? Percebi que o parametro "closeyest" não funciona.

@KesleyDavid
Copy link

Tambem estava precisando de uma formula que eu conseguisse obter o valor do dolar em datas anteriores a hoje

@bouli
Copy link

bouli commented Jan 18, 2024

@KesleyDavid e quem ainda tem procurado, tenho utilizado o seguinte:

=GOOGLEFINANCE("currency:USDCLP","price",date(2015,1,1),today(),"DAILY") 

Nesse exemplo acima é de USD (US Dolar) pra CLP (Pesos Chilenos), a data inicial é 1 de janeiro de 2015 a final é hoje e pra trazer diariamente.

A explicação completa da fórmula é essa https://support.google.com/docs/answer/3093281?hl=en&sjid=11252400379001089660-SA

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment