Crear una consulta a un SpreadSheets desde HTML

2,402 views
Skip to first unread message

Jose M Herrera V

unread,
Dec 26, 2015, 7:27:29 PM12/26/15
to Apps Script en Español
Saludos cordiales, llego a esta web porque vi una publicación que me llamo la atención https://sites.google.com/site/appsscriptenespanol/ejemplos/localizar-fila-de-una-busqueda-en-google-spreadsheets
Les escribo desde Venezuela, soy nuevo en el mundo de Google Script y tengo interés en desarrollar un código que permita ejecutar una consulta a un SpreadSheets desde una web HTML en Google Sites
De seguro aca encontrare a alguien que me oriente y ayude a desarrollar este codigo que esta crudo y espero pueda conseguir la colaboracion que necesito aca.

Que tengo:
Poseo un SpreadSheets que posee al menos 32 columnas y 500 filas que es alimentado desde un Formulario de Google
Los datos que alli se almacenan son: Numero de Cedula de identidad, Nombre, Dirección, Sistema de Envío, Forma de Pago entre otros.

Que se desea:

PARA EFECTOS DE PRUEBA SE PUEDE UTILIZAR LAS CEDULAS

V-123456789
V-1234

Deseo desarrollar un código que permita hacer una consulta del estatus de envío de cada usuario, en otro SpreadSheets tengo esto:



Tenia la siguiente secuencia de comandos

function myFunction() {
 
var sps = SpreadsheetApp.getActive();
 
var celda = SpreadsheetApp.getActiveSheet();
 
  celda
.getRange("D4").setValue("");
}

pero igual presenta errores al varios usuarios abrir la hoja de consultas.

Lógicamente no es tan practico al momento de que varios usuarios deseen consultar los estatus de sus envíos, por ello me interesa diseñar un código que permita hacer dicha tarea

Este código lo tengo publicado en:


El codigo que poseo lo tengo como un cuadro HTML incrustado:


<script>
function mySpreeadSheet() {
  // UBICAR SPREEADSHEET
  var sps = SpreadsheetApp.openById("1pNFq-2bsCSh2yaGhXEObo9MIO0zVHLpzcXiCEFE2yxo");
  // EXTRAER
  var sheet = sps.getSheets();
  // SACAR INFORMACION
  var data = sheet[0].getDataRange().getValue();
  // RECORRER DATA
  for(i in data)
  {
    var row = data[i];
    var cedula = row[6];         // f
    var nombre = row[7];         // g
    var fdespacho = row[32];     // ag
    var sistemaenco = row[19];   // s
    var formadeenvio = row[25];  //y
    var guia = row[31];          // af

// a-1 b-2 c-3 d-4 e-5 f-6 g-7 h-8 i-9 j-10 k-11
// l-12 m-13 n-14 o-15 p-16 q-17 r-18 s-19 t-20
// u-21 v-22 w-23 x-24 y-25 z = 26
// aa=27 ab=28 ac=29 ad=30 af=31 ag=32
//    sheet[0].getRange(cedula, 9)
}

}


  function buscar(){
    var x = parseFloat(document.getElementById("value1").value);
    document.getElementById("respuesta").sheet[0].getRange(value1, 9);
  }
  
  function resultado(){
var ci = document.getElementById('value1').value;
var ans = (ci);
document.getElementById('result').innerHTML=' Estimado Usuario de momento esta funcion no esta activa aun, estamos trabajando para que esta funcion este activa pronto. ';
//document.getElementById('result').innerHTML=' Estimado Usuario portador de la Cedula de Identidad ' + ci + ' de momento esta funcion no esta activa aun, estamos trabajando para que esta funcion este activa pronto. ';
//document.getElementById('result').innerHTML=ci + ' multiplicado por ' + ci + ' es igual a ' + ans;
}
</script>

<h4>RASTREE SU PAQUETE</h4>
<div style="border:2px solid #ff9900;padding:6px;margin:12px 0 12px 0;">
Indique su Cedula en el formato V-12345678
<input style="float:left;width:150px;font-size:20px;padding:4px;margin:6px;" type="text" id="value1" size="1">
<div style="float:left;font-size:20px;padding:4px;margin:6px;" id="result"></div>
<div style="clear:both;"></div>
<input style="font-size:20px;padding:4px;margin:6px;" type="button" value="BUSCAR" onclick="resultado()"> 
</div>


De antemano ya se que este código posee errores por ello lo publico acá con la finalidad de recibir ayuda.


Jose M Herrera V

unread,
Dec 26, 2015, 9:56:30 PM12/26/15
to Apps Script en Español
He actualizado el Codigo

<script>
function mySpreeadSheet() {
  // UBICAR SPREEADSHEET
  var sps = SpreadsheetApp.openById("1pNFq-2bsCSh2yaGhXEObo9MIO0zVHLpzcXiCEFE2yxo");
  // EXTRAER
  var sheet = sps.getSheets();
  // SACAR INFORMACION
  var data = sheet[0].getDataRange().getValue();
  // DETERMINAMOS VARIABLE userData
  var usersData = [];
  // RECORRER DATA
  for(i in data)
  {
    var row = data[i];
    var tiempoRegistro  = row[0];// a
    var cedula = row[5];         // f
    var nombre = row[6];         // g
    var fdespacho = row[31];     // ag
    var sistemaenco = row[18];   // s
    var formadeenvio = row[24];  //y
    var guia = row[30];          // af

// a-0 b-1 c-2 d-3 e-4 f-5 g-6 h-7 i-8 j-9 k-10
// l-11 m-12 n-13 o-14 p-15 q-16 r-17 s-18 t-19
// u-20 v-21 w-22 x-23 y-24 z = 25
// aa=26 ab=27 ac=28 ad=29 af=30 ag=31
//    sheet[0].getRange(cedula, 9)
    
  //CREAMOS UN OBJETO CON CADA USUARIO
    var userData= new toObject(tiempoRegistro, cedula, nombre, fdespacho, sistemaenco, formadeenvio, guia);
    Logger.log(userData);
    usersData[i] = userData;
    
}
return usersData;
}

function toObject(tiempoRegistro, cedula, nombre, fdespacho, sistemaenco, formadeenvio, guia){  
  this.tiempoRegistro = tiempoRegistro;
  this.cedula = cedula;
  this.nombre = nombre;
  this.fdespacho = fdespacho;
  this.sistemaenco = sistemaenco;
  this.formadeenvio = formadeenvio;
  this.guia = guia;
}

function doGet() {
  var datos = mySpreeadSheet();
  return ContentService.createTextOutput(JSON.stringify(datos)).
setMimeType(ContentService.MimeType.JSON);
}

 function buscar(){
  var x = parseFloat(document.getElementById("value1").value);
  document.getElementById("respuesta").sheet[0].getRange(value1, 9);
  }
  
function resultado(){
  var ci = document.getElementById('value1').value;
  var ans = (ci);
  document.getElementById('result').innerHTML=' Estimado Usuario de momento esta funcion no esta activa aun, estamos trabajando para que esta funcion este activa pronto. ';
//document.getElementById('result').innerHTML=' Estimado Usuario portador de la Cedula de Identidad ' + ci + ' de momento esta funcion no esta activa aun, estamos trabajando para que esta funcion este activa pronto. ';
//document.getElementById('result').innerHTML=ci + ' multiplicado por ' + ci + ' es igual a ' + ans;
}
</script>

<h4>RASTREE SU PAQUETE</h4>
<div style="border:2px solid #ff9900;padding:6px;margin:12px 0 12px 0;">
Indique su Cedula en el formato V-12345678
<input style="float:left;width:150px;font-size:20px;padding:4px;margin:6px;" type="text" id="value1" size="1">
<div style="float:left;font-size:20px;padding:4px;margin:6px;" id="result"></div>
<div style="clear:both;"></div>
<input style="font-size:20px;padding:4px;margin:6px;" type="button" value="BUSCAR" onclick="resultado()"> 
</div>



Igual aun sigo en el intento de comprender adecuadamente y hacer funcionar el código..!

Deivis Andres Herrera Julio

unread,
Dec 28, 2015, 8:39:23 AM12/28/15
to Apps Script en Español
@Jose M Herrera V, estoy probando la "HC" desde otra "HC" pero me dice que no tengo permisos para acceder a la HC por el código, para ver si puedes hacer algo con los permisos y así puede realizar pruebas y ver si te puede ayudar.

Deivis Andres Herrera Julio

unread,
Dec 28, 2015, 10:17:29 AM12/28/15
to Apps Script en Español
Un saludo @Jose M Herrera V

Bueno, parece que estas realizando unas cosas mal, o sea, debes de validar que las columnas no estén vacías para asi luego capturar el valor de esta misma, y esto como lo puede hacer muy fácil, de esta manera:

function mySpreeadSheet() {
 
var uiSpreadsheetApp = SpreadsheetApp.getActiveSpreadsheet();
 
var uiSheet = uiSpreadsheetApp.getActiveSheet();
 
 
var range = uiSheet.getDataRange();
 
var values = range.getValues();
 
 
var usersData = [];
 
 
for (var i = 0; i < values.length; i++)
 
{    
   
var rowDataArray = [];
   
   
for (var j = 0; j < values[i].length; j++)
   
{
     
if (values[i][j] != "")
     
{        
        rowDataArray
.push(values[i][j]);
     
}      
   
}
   
    usersData
.push(rowDataArray);
 
}
 
 
return usersData;
}

Y por cierto puedes utilizar array para que te sea mas fácil el manejo de los datos. Espero y te ayude con tu inconveniente.

Jose M Herrera V

unread,
Dec 29, 2015, 4:00:35 PM12/29/15
to Apps Script en Español
Hola Deivis Andres Herrera Julio

De antemano muchas Gracias por tu tiempo y por compartir tu conocimiento en esta consulta.

creo que todo lo estoy haciendo mal, la idea es corregir y hacerlo de manera correcta.

He analizado mucha información de muchos foros y de la web de https://developers.google.com/

Imagino que la manera de hacer funcionar el Script es la siguiente:


Es la forma en la que me imagino que debe hacerse, si bien es cierto que lo que tengo hecho es un codigo Javascript en HTML lo mas adecuado seria hacerlo de una manera que permita implementar las herramientas de manera correcta, si puedes o si alguien ve este mensaje y desea sumarse a la idea de la creacion de este Script bienvenido.


Si deseas puedo habilitar permisos de modificación al archivo:


https://drive.google.com/open?id=1pNFq-2bsCSh2yaGhXEObo9MIO0zVHLpzcXiCEFE2yxo (permiso de edicion listo usando tu correo asociado a G+)


En la web http://www.jesuministrosymas.com.ve/ml/rastreos se te fue concedido un permiso de edición usando tu correo asociado a G+ aca te dejo el link sin dominio propio


https://sites.google.com/a/jesuministrosymas.com.ve/j-e-suministros-y-mas-c-a-j-29444489-0/ml/rastreos


Podras modificar solo esa web crear, modificar, incluir o borrar codigo, con la finalidad de que tengas libertad de ver el la web como editor, se dejo abierto en area de comentarios para permitir poder interactuar por alla o por aca, la idea es que varios usuarios puedan también aprender como deben hacerse este tipo de script.


Gracias de ante mano por tu tiempo y gran colaboración.


Si tienes posibilidad de ayudarme a crear el Script de manera correcta

Deivis Andres Herrera Julio

unread,
Dec 29, 2015, 5:47:51 PM12/29/15
to Apps Script en Español
Pero si probaste el código que te he puesto ¿? para saber si te funciono o no te funciono.

Jose M Herrera V

unread,
Dec 29, 2015, 7:27:21 PM12/29/15
to Apps Script en Español
Pero debo cambiar el codigo original o incluirlo en un nuevo codigo gs del spreadsheet..?

Deivis Andres Herrera Julio

unread,
Dec 30, 2015, 8:26:36 AM12/30/15
to Apps Script en Español
Como prefieras, si quieres guarda una copia de seguridad de tu otro codigo y pegas este mismo o simplemente comenta el que esta y agregas este otro. Como prefieras lo importante es que lo pruebes.
Reply all
Reply to author
Forward
0 new messages