Google Planilhas Avançado - #100 Frete e Prazo (Correios)
13/06/2022No tutorial de hoje aprenderemos como integrar a Planilha do Google com os Correios trazendo o valor e prazo de entrega do frete.
Google Planilhas e Correios
Para criação desse código utilizaremos três sites como referência:
Webservice dos Correios
Manual de Utilização dos Correios
Classe UrlFetchApp
No código enviaremos uma requisição GET para o webservice dos correios passando alguns parâmetros e receberemos como resposta o valor e prazo da entrega.
appsscript.json
Antes de mais nada cabe ressaltar que no Google Apps Script precisaremos colocar explicitamente os escopos. Para isso, vamos em configurações, Mostrar arquivo manifesto.
Nesse arquivo inseriremos o escopo para usar a classe UrlFetchApp:
{
"timeZone": "America/Sao_Paulo",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"oauthScopes": [
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/script.external_request"
],
"runtimeVersion": "V8"
}
Codigo.gs
Configurado essa parte inicial, poderemos desenvolver o código que fará a busca no correio:
let app = SpreadsheetApp;
let spreadsheet = app.getActiveSpreadsheet();
let sheet = spreadsheet.getSheetByName('Página1');
//Calcula o prazo e o valor do frete
function setFreteAndPrazo()
{
let cepOrigem = '35500155';
let cepDestino = sheet.getRange('A2').getValue();
let options = {
'method':'get'
}
let reqs = UrlFetchApp.fetch(`http://ws.correios.com.br/calculador/calcprecoprazo.asmx/CalcPrecoPrazo?nCdEmpresa=&sDsSenha=&nCdServico=40010&sCepOrigem=${cepOrigem}&sCepDestino=${cepDestino}&nVlPeso=1.2&nCdFormato=1&nVlComprimento=20&nVlAltura=20&nVlLargura=20&nVlDiametro=0&sCdMaoPropria=n&nVlValorDeclarado=200&sCdAvisoRecebimento=n`, options);
let ress = reqs.getContentText();
let posValor1 = ress.indexOf('')+7;
let posValor2 = ress.indexOf(' ');
let valor = ress.substring(posValor1,posValor2);
let posPrazo1 = ress.indexOf('')+14;
let posPrazo2 = ress.indexOf(' ');
let prazo = ress.substring(posPrazo1,posPrazo2);
sheet.getRange('B2').setValue(valor);
sheet.getRange('C2').setValue(prazo);
}
Por hoje é só! Sucesso nos códigos e na vida!