Last active
April 1, 2025 14:37
-
-
Save danperrout/b27197056fa38d0d669332647ab89d7a to your computer and use it in GitHub Desktop.
API Função TESOURODIRETO Google Sheets
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* @return Acesse radaropcoes.com Retorna a cotação atual de um título específico do Tesouro Direto. | |
* Fonte: https://www.tesourodireto.com.br/titulos/precos-e-taxas.htm | |
**/ | |
function TESOURODIRETO(bondName, argumento="r") { | |
let srcURL = "https://api.radaropcoes.com/bonds.json"; | |
let jsondata = UrlFetchApp.fetch(srcURL); | |
let parsedData = JSON.parse(jsondata.getContentText()).response; | |
for(let bond of parsedData.TrsrBdTradgList) { | |
let currBondName = bond.TrsrBd.nm; | |
if (currBondName.toLowerCase() === bondName.toLowerCase()) | |
if(argumento == "r") | |
return bond.TrsrBd.untrRedVal; | |
else | |
return bond.TrsrBd.untrInvstmtVal; | |
} | |
throw new Error("Título não encontrado."); | |
} |
podes usar o Curl pra isso
function obterConteudoElementoJson($url, $elementSelector) {
// Inicializa o cURL
$curl = curl_init();
// Configura as opções do cURL
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // Desativa a verificação SSL (não recomendado em produção)
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // Desativa a verificação do host SSL (não recomendado em produção)
// Executa a requisição cURL
$html = curl_exec($curl);
// Verifica se houve erro
if ($html === false) {
echo 'Erro cURL: ' . curl_error($curl);
curl_close($curl);
return false;
}
// Fecha a conexão cURL
curl_close($curl);
// Cria um objeto DOMDocument para analisar o HTML
$dom = new DOMDocument();
@$dom->loadHTML('<?xml encoding="utf-8" ?>' . $html); // Supressão de erros de parsing (ex: tags não fechadas)
// Cria um objeto DOMXPath para executar consultas XPath
$xpath = new DOMXPath($dom);
// Executa a consulta XPath para encontrar o elemento desejado
$elementList = $xpath->query('//*[contains(@id, "' . str_replace('#', '', $elementSelector) . '")]');
if ($elementList->length > 0) {
$element = $elementList->item(0);
// Extrai os dados relevantes do elemento
$data = [];
$listItems = $xpath->query('./li', $element); // Seleciona todos os <li> dentro do elemento
foreach ($listItems as $listItem) {
$titulo = $xpath->query('./h3[@class="variavel-titulo"]/text()', $listItem)->item(0)->textContent;
$dado = $xpath->query('./p[@class="variavel-dado"]/text()', $listItem)->item(0)->textContent;
$periodo = $xpath->query('./p[@class="variavel-periodo"]/text()', $listItem)->item(0)->textContent;
$data[] = [
'titulo' => trim($titulo),
'dado' => trim($dado),
'periodo' => trim($periodo),
];
}
// Converte o array para JSON
return json_encode($data, JSON_UNESCAPED_UNICODE);
} else {
return false; // Elemento não encontrado
}
}
// Exemplo de uso:
$url = 'https://www.ibge.gov.br/explica/inflacao.php';
$elementSelector = '#dadoBrasil';
$json = obterConteudoElementoJson($url, $elementSelector);
if ($json !== false) {
header('Content-Type: application/json'); // Define o cabeçalho para JSON
echo $json;
} else {
echo "Não foi possível obter o conteúdo do elemento '$elementSelector' do site '$url'.";
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Legal a idéia.
Qual seria o endpoint para resgatar informações mais básicas do IPCA.
Por exemplo, esses três dessa página do IBGE: https://www.ibge.gov.br/explica/inflacao.php
IPCA do último mês, IPCA acumulado de 12 meses, e INPC do último mês.
Teria como ter uma versão modificada?
Grato,