Tentando consumir a API Dados Abertos do COMPRASNET, como faço no excel, google sheet…
Abaixo o código que chegeui mais perto de sucesso, porém com um erro de Network request failed.
const msg = (m, t='Message') => { Common.UI.alert({ msg: m, title: t }) };
(async function()
{
var API_BASE_URL = 'https://dadosabertos.compras.gov.br';
var HEADERS = new Headers();
HEADERS.append('Accept', 'application/json'); // Mais específico para JSON
// HEADERS.append('Content-Type', 'application/json'); // Content-Type geralmente não é necessário para GET
/**
* Função principal para buscar dados de grupos de material
* @param {number} pagina - Número da página (padrão: 1)
* @param {boolean} statusGrupo - Status do grupo (padrão: true)
* @return {Object} Dados retornados pela API
*/
async function buscarGruposMaterial(pagina = 1, statusGrupo = true) {
try {
var url = `${API_BASE_URL}/modulo-material/1_consultarGrupoMaterial?pagina=${pagina}&statusGrupo=${statusGrupo}`;
// Fazer a requisição
let response = await fetch(url, {
method: 'GET',
headers: HEADERS,
mode: "cors"
});
// Verifica se a resposta foi bem-sucedida (status 200-299)
if (!response.ok) {
const errorBody = await response.text(); // Tenta ler o corpo do erro
throw new Error(`Erro na requisição: Status ${response.status} - ${response.statusText}. Detalhes: ${errorBody}`);
}
// Parseia a resposta como JSON
let data = await response.json();
msg(`Total de registros encontrados: ${data.totalRegistros}`);
msg(`Total de páginas: ${data.totalPaginas}`);
msg(`Páginas restantes: ${data.paginasRestantes}`);
return data;
} catch (error) {
msg(`Erro ao buscar dados: ${error.message}`, 'Erro de Rede/API');
// Opcional: Para depuração, você pode querer logar o erro completo no console se o OnlyOffice tiver um.
// console.error("Detalhes completos do erro:", error);
}
}
await buscarGruposMaterial();
})();