Se você tem uma tabela no Excel ou Google Sheets para controlar suas ações da bolsa de valores, certamente já se cansou do trabalho de pesquisar o preço de uma ação de cada vez para atualizar sua tabela.
Ora, existe uma solução muito mais simples. Podemos criar uma função que faz o trabalho árduo para nós. 🙌
Obtendo os preços
A API do AlphaVantage é perfeita para isso! Vamos utilizar apenas um dos endpoints mas você pode conferir a documentação completa.
Um detalhe: a API gratuita tem um limite de 5 requisições por minuto e 500 por dia, então como fazer se precisamos de mais? Por sorte o site nos permite criar mais de uma API key, basta utilizar um e-mail diferente para cada.
Lembre-se que caso você esteja criando uma aplicação profissional e precisa de muitas requisições, vale a pena conferir os planos premium, que vão te dar direito a mais de 5 requisições por minuto.
Google Apps Script
Para nossa aplicação, vamos utilizar o Google Apps Script para criar a função STOCK_PRICES()
. Se você nunca utilizou, basta acessar uma planilha do Google Sheets e ir no menu Ferramentas > Editor de script. Para quem está acostumado com JavaScript, a sintaxe utilizada é bem parecida.
Vamos começar criando uma variável global que armazena nossas API keys:
KEYS = [
'__SUAS__',
'__API___',
'__KEYS__',
'__AQUI__'
];
Nossa função STOCK_PRICES
deve receber um range
1 x N de células da tabela e retornar uma lista de preços:
function STOCK_PRICES(range) {
var return_values = new Array(range.length);
for (var i=0; i<range.length; i++) {
// LOOP PRINCIPAL
}
return return_values;
}
O endpoint que vamos utilizar para obter os preços requer o código da ação e a API key como argumentos em um método GET, retornando um JSON:
Que na data que este artigo está sendo escrito, apresenta o seguinte resultado:
{
Global Quote: {
01. symbol: "MSFT",
02. open: "143.7500",
03. high: "149.6000",
04. low: "141.2700",
05. price: "148.3400",
06. volume: "81850079",
07. latest trading day: "2020-03-24",
08. previous close: "135.9800",
09. change: "12.3600",
10. change percent: "9.0896%"
}
}
Para o nome da ação, basta utilizarmos range[i]
e para a key, precisamos utilizar uma de cada vez para contornar o limite imposto pela API:
var key = KEYS[i % KEYS.length];
var stock = range[i];
var url = 'https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol=' + stock + '.SA&apikey=' + key;
Agora que já temos a url, basta fazer uma requisição GET e acessar as chaves do JSON retornado:
var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});
var data = JSON.parse(response.getContentText());
if (data['Global Quote'] === undefined) {
return_values[i] = 0;
} else {
return_values[i] = parseFloat(data['Global Quote']['05. price']);
}
Veja que adicionamos uma simples verificação caso a requisição falhe por limites atingidos na API ou algum outro motivo que faça a variável de retorno não conter a chave Global Quote
.
Pronto! Agora a função STOCK_PRICES
já esta disponível e pode ser utilizada em sua tabela do Google Sheets.
Código
Veja abaixo o código completo deste artigo:
KEYS = [
'__SUAS__',
'__API___',
'__KEYS__',
'__AQUI__'
];
function STOCK_PRICES(range) {
var return_values = new Array(range.length);
for (var i=0; i<range.length; i++) {
var key = KEYS[i % KEYS.length];
var stock = range[i];
var url = 'https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol=' + stock + '.SA&apikey=' + key;
var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});
var data = JSON.parse(response.getContentText());
if (data['Global Quote'] === undefined) {
return_values[i] = 0;
} else {
return_values[i] = parseFloat(data['Global Quote']['05. price']);
}
}
return return_values;
}
Este código esta disponível no github
gsheets-stock (this link opens in a new window) by umcodigo (this link opens in a new window)
Obtenha preços de ações da Bovespa em planilhas do Google Sheets
Nota: Este artigo tem como finalidade dar uma breve introdução ao Google Scripts no Sheets. Caso queira, o Google Sheets oferece a função GOOGLEFINANCE que faz o mesmo da nossa STOCK_PRICES, com algumas funcionalidades a mais.
Referências
Veja abaixo para mais informações sobre este artigo:
- Documentação do Google Apps Script.
- Documentação do AlphaVantage.