Google Planilhas Avançado - #105 Integração com a Tabela FIPE
09/09/2022Nesse tutorial vamos aprender como realizar a integração do Google Planilhas com a tabela FIPE, trazendo dados de veículos.
Tabela Fipe e Google Planilhas
Para fazer essa integração vamos fazer uso do Github.
No Google Planilhas vamos utilizar a classe do Google Apps Script conhecida como Class UrlFetchApp para fazer requisições em webservices externos.
Arquivo Manifesto
Precisamos deixar explícito no nosso arquivo de manifesto appscript.json as permissões de acesso a arquivos externos. Ele ficará da seguinte maneira:
{
"timeZone": "America/Sao_Paulo",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/script.external_request"
]
}
Tabela de Referência
A cada mês a tabela Fipe é atualizada, então precisamos primeiramente pegar a última tabela vigente com seus referidos preços, modelos, etc:
//Retorna a tabela de referência da FIPE
function getTable() {
let options = {
'method' : 'post',
'contentType':'application/json'
};
let reqs = UrlFetchApp.fetch('http://veiculos.fipe.org.br/api/veiculos/ConsultarTabelaDeReferencia', options);
let ress = JSON.parse(reqs.getContentText());
return ress[0].Codigo;
}
Consulta da Marca
Agora que já temos a tabela de referência podemos buscar as marcas de veículos:
//Retornar as marcas dos veículos
function getMarcas()
{
let row = 2;
let formData = {
'codigoTabelaReferencia': getTable(),
'codigoTipoVeiculo': 1
};
var options = {
'method' : 'post',
'contentType':'application/json',
'payload' : JSON.stringify(formData)
};
let reqs = UrlFetchApp.fetch('http://veiculos.fipe.org.br/api/veiculos/ConsultarMarcas', options);
let ress = JSON.parse(reqs.getContentText());
ress.map((elem,ind,obj)=>{
sheetDB.getRange(`A${row}`).setValue(elem.Label);
sheetDB.getRange(`B${row}`).setValue(elem.Value);
row++;
});
}
Consulta do Modelo
Para selecionar os modelos, primeiramente precisamos que o usuário selecione a marca, portanto precisamos criar um acionador de edição para que quando ele selecione a marca execute a função de listagem dos modelos.
//Retorna os modelos dos veículos escolhidos pelo usuário
function getModelos(e)
{
let ui = app.getUi();
if(e.range.getRow() == 1 && e.range.getColumn() == 2){
let row = 2;
let cell = sheetFormulario.getRange('B2');
cell.setValue('Carregando...').setFontColor('#ccc')
let formData = {
'codigoTabelaReferencia': getTable(),
'codigoTipoVeiculo': 1,
"codigoMarca": sheetFormulario.getRange('C1').getValue()
};
var options = {
'method' : 'post',
'contentType':'application/json',
'payload' : JSON.stringify(formData)
};
let reqs = UrlFetchApp.fetch('http://veiculos.fipe.org.br/api/veiculos/ConsultarModelos', options);
let ress = JSON.parse(reqs.getContentText());
sheetDB.getRange('D2:E').clearContent();
ress.Modelos.map((elem,ind,obj)=>{
sheetDB.getRange(`D${row}`).setValue(elem.Label);
sheetDB.getRange(`E${row}`).setValue(elem.Value);
row++;
});
let range = sheetDB.getRange('D2:D');
let rule = app.newDataValidation().requireValueInRange(range).build();
cell.setDataValidation(rule);
cell.setValue('').setFontColor('#000');
}
}
Por hoje é só! Sucesso nos códigos e na vida!