Last active
April 13, 2022 11:58
-
-
Save rodrigolopezguerra/bf0303fa9f7aba48ca59d74e1662e4c1 to your computer and use it in GitHub Desktop.
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
function test() { | |
updateSeries(); | |
var a = 0; | |
} | |
function doGet(request) { | |
_setCount(); | |
// Logica llamado principal | |
if (!request.parameters.route ) { | |
return ContentService.createTextOutput(JSON.stringify("Solo Chuck Norris puede llamar nuestra API sin permiso")); | |
} | |
if(request.parameters.route.indexOf("env") > -1) { return ContentService.createTextOutput(JSON.stringify(getEnv())); } | |
if(request.parameters.route.indexOf("index") > -1) { return ContentService.createTextOutput(JSON.stringify(principalesVariables())); } | |
if(request.parameters.route.indexOf("detalles") > -1) { | |
if(!request.parameters.route_id) { | |
return ContentService.createTextOutput(JSON.stringify("No se ha provisto un route_id. Por favor revise la documentación para más detalles")); | |
} | |
var params = find_route(request.parameters.route_id); | |
if (params == -1) return ContentService.createTextOutput(JSON.stringify("No existe ese route_id.")); | |
return ContentService.createTextOutput(JSON.stringify(historial_detalle(request.parameters.fecha_desde,request.parameters.fecha_hasta,params))) | |
} | |
return ContentService.createTextOutput(JSON.stringify("La ruta no existe")); | |
} | |
function find_route(route_id) { | |
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('env'); | |
var column = 7; //column Index | |
var columnValues = sheet.getRange(1, column, sheet.getLastRow()).getValues(); | |
var searchResult = columnValues.findIndex(route_id); | |
if(searchResult != -1) { | |
var rng = sheet.getRange(searchResult+1, 1, 1, 7) | |
var rangeArray = rng.getValues(); | |
return rangeArray[0]; | |
} | |
return -1; | |
} | |
Array.prototype.findIndex = function(search){ | |
if(search == "") return false; | |
for (var i=0; i<this.length; i++) | |
if (this[i].toString().indexOf(search) > -1 ) return i; | |
return -1; | |
} | |
function getEnv() { | |
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('env'); | |
var values = sheet.getSheetValues(1,1,50,7); | |
var data = []; | |
var variable = {}; | |
for(var i=1;i<values.length;i++) { | |
variable = {}; | |
variable['serie'] = values[i][0]; | |
variable['serie1'] = values[i][1]; | |
variable['serie2'] = values[i][2]; | |
variable['serie3'] = values[i][3]; | |
variable['serie4'] = values[i][4]; | |
variable['detalle'] = values[i][5]; | |
variable['route_id'] = values[i][6]; | |
if(variable['serie'] != '') data.push(variable); | |
} | |
return data; | |
} | |
function updateEnv() { | |
var options = { | |
"method" : "GET", | |
}; | |
try { | |
var i; | |
var data = []; | |
var variable = {}; | |
var url = "http://www.bcra.gob.ar/PublicacionesEstadisticas/Principales_variables.asp"; | |
var result = UrlFetchApp.fetch(url,options); | |
var response = result.getContentText("iso-8859-1"); | |
var start = "<table" | |
var end ="</table>" | |
var response = response.substring(response.indexOf(start)+start.length, response.indexOf(end)); | |
response = response.split("<tr>"); | |
for(i=0;i<response.length;i++) { | |
r = response[i]; | |
if(r.indexOf("<a href=") > -1) { | |
variable = {}; | |
variable['serie'] = 0; | |
variable['serie1'] = 0; | |
variable['serie2'] = 0; | |
variable['serie3'] = 0; | |
variable['serie4'] = 0; | |
variable['detalle'] = 0; | |
var start = "?serie=" | |
var end ="&" | |
var s = r.substring(r.lastIndexOf(start)+start.length, r.indexOf(end)); | |
s = s.trim(); | |
variable['serie'] = s; | |
var start = "&detalle=" | |
var end ="target=" | |
var s = r.substring(r.lastIndexOf(start)+start.length, r.lastIndexOf(end)); | |
s = s.replaceAll("'",""); | |
s = s.trim(); | |
variable['detalle'] = s; | |
if(r.indexOf("&serie1") > -1) { | |
var start = "serie1=" | |
var end ="&" | |
var s1 = r.substring(r.lastIndexOf(start)+start.length); | |
var s = s1.substring(0, s1.indexOf(end)); | |
s = s.trim(); | |
variable['serie1'] = s; | |
} | |
if(r.indexOf("&serie2") > -1) { | |
var start = "serie2=" | |
var end ="&" | |
var s1 = r.substring(r.lastIndexOf(start)+start.length); | |
var s = s1.substring(0, s1.indexOf(end)); | |
s = s.trim(); | |
variable['serie2'] = s; | |
} | |
if(r.indexOf("&serie3") > -1) { | |
var start = "serie3=" | |
var end ="&" | |
var s1 = r.substring(r.lastIndexOf(start)+start.length); | |
var s = s1.substring(0, s1.indexOf(end)); | |
s = s.trim(); | |
variable['serie3'] = s; | |
} | |
if(r.indexOf("&serie4") > -1) { | |
var start = "serie4=" | |
var end ="&" | |
var s1 = r.substring(r.lastIndexOf(start)+start.length); | |
var s = s1.substring(0, s1.indexOf(end)); | |
s = s.trim(); | |
variable['serie4'] = s; | |
} | |
data.push(variable); | |
} | |
} | |
_escribir_valores_en_env(data); | |
} | |
catch (e) { | |
Logger.log(e); | |
} | |
} | |
function _escribir_valores_en_env(data) { | |
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('env'); | |
for(var i=0;i<data.length;i++) { | |
escribir_en_celda(sheet,i+2,1,data[i].serie); | |
escribir_en_celda(sheet,i+2,6,data[i].detalle); | |
escribir_en_celda(sheet,i+2,2,data[i].serie1); | |
escribir_en_celda(sheet,i+2,3,data[i].serie2); | |
escribir_en_celda(sheet,i+2,4,data[i].serie3); | |
escribir_en_celda(sheet,i+2,5,data[i].serie4); | |
escribir_en_celda(sheet,i+2,7,i); | |
} | |
} | |
function escribir_en_celda(sheet,fila,columna,valor) { | |
var cell = sheet.getRange(fila,columna); | |
cell.setValue(valor); | |
} | |
function principalesVariables() { | |
var options = { | |
"method" : "GET", | |
}; | |
try { | |
var i,j; | |
var data = []; | |
var variable = {}; | |
var url = "http://www.bcra.gob.ar/PublicacionesEstadisticas/Principales_variables.asp"; | |
var result = UrlFetchApp.fetch(url,options); | |
var response = result.getContentText("iso-8859-1"); | |
var start = "<table" | |
var end ="</table>" | |
var response = response.substring(response.indexOf(start)+start.length, response.indexOf(end)); | |
response = response.split("<tr>"); | |
for(i=0;i<response.length;i++) { | |
r = response[i]; | |
l = r.split("<td"); | |
for(j=0;j<l.length;j++) { | |
r = l[j]; | |
if(r.indexOf("<a href=") > -1) { | |
variable = {}; | |
var start = "target='_self'>" | |
var end ="</a" | |
var s = r.substring(r.lastIndexOf(start)+start.length, r.lastIndexOf(end)); | |
s = s.replaceAll(" ",""); | |
s = s.replaceAll("\xa0",""); | |
s = s.replaceAll(";",""); | |
s = s.trim(); | |
variable['variable'] = s; | |
} | |
if(r.indexOf("style=\"text-align:right\">") > -1) { | |
start = "style=\"text-align:right\">" | |
end = "</td>" | |
var s = r.substring(r.lastIndexOf(start)+start.length, r.lastIndexOf(end)); | |
if(s.lastIndexOf("/") > -1) { | |
variable['fecha'] = s; | |
} else { | |
variable['valor'] = s; | |
data.push(variable); | |
} | |
} | |
} | |
} | |
variable = {}; | |
variable['count']=_getCount() | |
data.push(variable); | |
return data; | |
} | |
catch (e) { | |
Logger.log(e); | |
} | |
} | |
function historial_detalle(fecha_desde,fecha_hasta,params) { | |
var options = { | |
'method': 'get', | |
}; | |
try { | |
var data = []; | |
var variable = {}; | |
var fecha_desde = fecha_desde; | |
var fecha_hasta = fecha_hasta; | |
var serie = serie; | |
var detalle = params[5]; | |
var detalle_filtered = detalle.replaceAll("%",""); | |
var detalle_encode = escape(detalle_filtered); | |
var url = "http://www.bcra.gob.ar/PublicacionesEstadisticas/Principales_variables_datos.asp?fecha_desde="+fecha_desde+"&fecha_hasta="+fecha_hasta+"&B1=Enviar&primeravez=1&serie="+params[0]+"&serie1="+params[1]+"&serie2="+params[2]+"&serie3="+params[3]+"&serie4="+params[4]+"&detalle="+detalle_encode; | |
console.log(url); | |
var result = UrlFetchApp.fetch(url,options); | |
var response = result.getContentText("iso-8859-1"); | |
var start = "<table" | |
var end ="</table>" | |
var s = response.substring(response.indexOf(start)+start.length, response.indexOf(end)); | |
s = s.split("<tr>") | |
for(i=0;i<s.length;i++) { | |
if(s[i].indexOf("style=\"text-align:right\">") > -1) { | |
variable = {}; | |
variable['variable'] = detalle; | |
start = "<td>"; | |
end = "</td>"; | |
variable['fecha'] = s[i].substring(s[i].indexOf(start)+start.length,s[i].indexOf(end)); | |
start = "style=\"text-align:right\">"; | |
variable['valor'] = s[i].substring(s[i].indexOf(start)+start.length,s[i].lastIndexOf(end)); | |
variable['valor'] = variable['valor'].replaceAll("\n","").replaceAll("\t","").replaceAll("\r",""); | |
data.push(variable); | |
} | |
} | |
variable = {}; | |
variable['count']=_getCount() | |
data.push(variable); | |
return data; | |
} | |
catch (e) { | |
Logger.log(e); | |
} | |
} | |
function _getCount() { | |
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('main'); | |
var count = sheet.getRange(2,1).getValue(); | |
return count; | |
} | |
function _setCount() { | |
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('main'); | |
var count = _getCount()+1; | |
sheet.getRange(2,1).setValue(count); | |
return count; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment