|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  Raspberry Pi Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  AutoIt (Programación) Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

App inventor 2 en español
Cómo programar los teléfonos móviles con Android
mediante App inventor 2 - Juan Antonio Villalpando

-- Tutorial de iniciación de App Inventor 2 en español --

Volver al índice del tutorial

_________________________________________________

136.- Google sheet. Hoja de Cálculo. Guardar. Borrar. Ver. Actualizar. Bajar.

p136_googlesheet.aia

- Tenemos nuestra cuenta de Google.

- Entramos en Google Sheet: https://docs.google.com/spreadsheets/u/0/

- Pulsamos en el icono de "En blanco" para crear una nueva Hoja.

- Archivo / importar. Importamos este archivo desde nuestro ordenador.

- productos.csv

productos.csv
 
10,Arduino UNO,12,3
11,Arduino DUE,16,4
12,Arduino Mini,18,2
13,Arduino Micro,14,10
14,ESP8266-01,11,4
15,ESP8266-12,15,5
16,ESP32,16,5
17,Pantalla LCD-I2C,14,2
18,Módulo I2C,12,1
19,Teclado,10,10
20,Servo g90,12,2
21,Buzzer,14,10
22,Módulo HC-06,12,2
23,Módulo HC-10,12,3
24,Pantalla OLED,11,1
25,Relé,9,3
26,Panel solar,14,3
27,Sensor presión,12,2
28,Sensor humedad,14,3
29,Sensor peso,14,3
30,Sensor infrarojo,10,1
31,Sensor ultrasonido,12,2
32,Brújula,14,2
33,Giroscopio,11,3

- Una vez importado, cambiamos el nombre productos y la hoja, le ponemos hoja1

- El Nombre_Hoja será hoja1 (observa que está en minúscula y no tiene espacio, no poner Hoja 1)

- Vamos a Compartir esta Hoja para que cualquier persona la pueda utilizar.

- Más adelante necesitaremos el código identificador de nuestra Hoja, este será el Identificador.

19ifIR______________________n3dwLL8

_________________________________________________________________

- Script. Secuencia de comandos.

- Vamos a crear un Script para bajar toda esta Hoja de Cálculo.

- Utilizaremos el Editor antiguo.

- Vamos a implementar nuestro Script como aplicación web.

- En principio pondremos que puede accedar todos, incluso anónimos.

- IMPORTANTE cada vez que actualicemos el Script debemos establecer un Nuevo Project version, si no lo hacemos no se actualizará.

- La dirección de la macro "Current web app URL" tendrá esta forma:

https://script.google.com/macros/s/AKfycbxaNmD0h...............................................Mayrub/exec

- Este es el Script que debemos copiar y pegar.

productos
 
function doGet(e) {
  var Identificador_Hoja = SpreadsheetApp.openById(e.parameter.Identificador_Hoja);
  var Nombre_Hoja = Identificador_Hoja.getSheetByName(e.parameter.Nombre_Hoja);
  var Funcion = e.parameter.FUNCION;
  var Borrar = e.parameter.BORRAR;
  var Buscar = e.parameter.BUSCAR;
  var Query = e.parameter.QUERY;
  var rango = Nombre_Hoja.getDataRange().getValues();
  
  // AGREGAR un nuevo registro.
  if (Funcion == 'AGREGAR') {
    var registro = e.parameter.REGISTRO.split(',');
    var codigo = registro[0];   
    var rangoA = Nombre_Hoja.getRange('A:A');
    var v = rangoA.getValues();
    for(var i = v.length-1;i>=0;i--)
      if(v[0,i] == codigo) { 
        return ContentService.createTextOutput("Ya existe."); }
    // En caso que no exista, lo crea...
    Nombre_Hoja.appendRow(registro);
    rangoA.sort(1);
    return ContentService.createTextOutput("Agregado.");  
  }
  
  // MODIFICAR.
  else if (Funcion == 'MODIFICAR') {
    var registro = e.parameter.REGISTRO.split(',');
    var codigo = registro[0];
    var rangoA = Nombre_Hoja.getRange('A:A');
    var v = rangoA.getValues();
    for(var i = v.length-1;i>=0;i--)
      if(v[0,i] == codigo) {
       rangoRegistro = Nombre_Hoja.getRange(i+1,1,1,4)
       rangoRegistro.setValues([registro]);
       return ContentService.createTextOutput("Registro modificado."); }
  return ContentService.createTextOutput("No existe.");
  }
  
  // BUSCAR un código.
  else if (Funcion == 'BUSCAR') {
  var rangoA = Nombre_Hoja.getRange('A:A');
  var v = rangoA.getValues();
  for(var i = v.length-1;i>=0;i--)
    if(v[0,i] == Buscar) {
       var fila = Nombre_Hoja.getRange(i+1,1,1,4).getValues()
       return ContentService.createTextOutput(JSON.stringify(fila));
       // La línea de abajo devuelve String: 25,Relé,9,3
       // return ContentService.createTextOutput(fila).setMimeType(ContentService.MimeType.TEXT);
        }
 return ContentService.createTextOutput("No existe.");
  }
  
  // LEER TODO toda la base y devolver como una lista JSON
  else if (Funcion == 'LEER_TODO') {
    return ContentService.createTextOutput(JSON.stringify(rango)); 
    //return ContentService.createTextOutput(rango).setMimeType(ContentService.MimeType.TEXT);    
  }
  
  // OTRA FORMA DE LEER TODO toda la base. Devuelve String.
  else if (Funcion == 'LEER_TODO2') {
    var todo = '';
      for(var fila = 0 ; fila < rango.length ; ++fila){
        todo += rango[fila].join(',') + '\n';  
      } 
    return ContentService.createTextOutput(todo).setMimeType(ContentService.MimeType.TEXT);
  }
  
  // BORRAR un registro.
  else if (Funcion == 'BORRAR') {
  var rangoA = Nombre_Hoja.getRange('A:A');
  var v = rangoA.getValues();
  for(var i=v.length-1;i>=0;i--)
    if(v[0,i] == Borrar)
      Nombre_Hoja.deleteRow(i+1);
  return ContentService.createTextOutput("Registro borrado.");    
 }
  
   // QUERY. 
  else if (Funcion == 'QUERY') {
var query = '=QUERY('+Nombre_Hoja.getName()+"!"+Nombre_Hoja.getDataRange().getA1Notation()+';\"'+Query+'\")';
    var inserta = Identificador_Hoja.insertSheet();
    var hacer_query = inserta.getRange(1,1).setFormula(query);
    var resultado = inserta.getDataRange().getValues();
    Identificador_Hoja.deleteSheet(inserta); 
    
    return ContentService.createTextOutput(resultado).setMimeType(ContentService.MimeType.TEXT);
    // return ContentService.createTextOutput(JSON.stringify(resultado)); 
  }
  
  
}

_________________
- Diseño.

_________________
-
Bloques.

_______________________________________
- Insertar un valor mediante doGet y doPost.

- Hay dos formas de enviar/recibir la información: mediante doGet y doPost.

- Observa que la dirección es la misma para las dos formas:

https://script.google.com/macros/s/AKfycbxaNmD0h...............................................Mayrub/exec

Código.gs
 
function doGet(e) {
// var Identificador_Hoja = SpreadsheetApp.openById(e.parameter.Identificador_Hoja);
// var Nombre_Hoja = Identificador_Hoja.getSheetByName(e.parameter.Nombre_Hoja);

var sheet = SpreadsheetApp.openById(e.parameter.Identificador_Hoja).getSheetByName(e.parameter.Nombre_Hoja);
var func = e.parameter.func;

if (func == 'myFunction') {
rx = e.parameter.rx;
cx = e.parameter.cx;
vx = e.parameter.vx;
sheet.getRange(rx,cx).setValue(vx);
return ContentService.createTextOutput("Agregado con GET.");
}
}

/////////////////////////////////////////////////////////

function doPost(e) {
// var Identificador_Hoja = SpreadsheetApp.openById(e.parameter.Identificador_Hoja);
// var Nombre_Hoja = Identificador_Hoja.getSheetByName(e.parameter.Nombre_Hoja);

var sheet = SpreadsheetApp.openById(e.parameter.Identificador_Hoja).getSheetByName(e.parameter.Nombre_Hoja);
var func = e.parameter.func;

if (func == 'myFunction') {
rx = e.parameter.rx;
cx = e.parameter.cx;
vx = e.parameter.vx;
sheet.getRange(rx,cx).setValue(vx);
return ContentService.createTextOutput("Agregado con POST.");
}
}

- Con el Get se obtienen carácteres españoles como la eñe y las tildes, con el Post no.

- Para que funcione con Post, utilizamos el bloque UriEncode.

p136ii_googlesheet_GET_POST.aia

 

 

var sheet = SpreadsheetApp.openById(e.parameter.ID).getSheetByName(e.parameter.SH);
var func = e.parameter.func;

if (func == 'myFunction') {
rx = e.parameter.rx;
cx = e.parameter.cx;
vx = e.parameter.vx;
sheet.getRange(rx,cx).setValue(vx);
return ContentService.createTextOutput("Agregado.");
}

____________________________________________

- Más información. Obtención directa de datos.

- Para obtener datos simplemente utiliza estas expresiones.

- https://developers.google.com/apps-script/reference/spreadsheet

- Obtener un rango directamente sin Script:

https://docs.google.com/spreadsheets/d/19vvvvvvvvvvvvvvvvvvvvvvGbIn3dwLL8/export?format=csv&range=B4:B12

https://docs.google.com/spreadsheets/d/19iRvvvvvvvvvvvvvvvvvvdwLL8/export?format=csv&gid=1451883389&range=B4:B12

- Bajar toda la Hoja en csv:

https://docs.google.com/spreadsheets/d/19ivvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvdwLL8/gviz/tq?tqx=out:csv&sheet=hoja1

- Bajar toda la Hoja en formato JSON:

https://spreadsheets.google.com/feeds/cells/19vvvvvvvvvvvvvvvvvvvvvvvGbIn3dwLL8/1/public/full?alt=json

- Query

https://developers.google.com/chart/interactive/docs/querylanguage

https://developers.google.com/chart/interactive/docs/reference#QueryResponse_getDataTable

https://developers.google.com/apps-script/guides/web

https://stackoverflow.com/questions/22695365/query-google-spreadsheet-with-url-parameters

http://sophiafeng.com/technical/2013/12/26/visualization-using-google-charts/

 

https://docs.google.com/spreadsheets/d/19iRIRdnCXf2rt089pu5n2SAT_geeQ7nc8GbIn3dwLL8/edit

https://docs.google.com/spreadsheets/d/19iRIRdnCXf2rt089pu5n2SAT_geeQ7nc8GbIn3dwLL8/edit#gid=1451883389

https://docs.google.com/spreadsheets/d/19iRIRdnCXf2rt089pu5n2SAT_geeQ7nc8GbIn3dwLL8/export?format=csv&gid=1451883389

https://docs.google.com/spreadsheets/d/19iRIRdnCXf2rt089pu5n2SAT_geeQ7nc8GbIn3dwLL8/export?format=csv&range=B4:B12&gid=1451883389

https://docs.google.com/spreadsheets/d/19iRIRdnCXf2rt089pu5n2SAT_geeQ7nc8GbIn3dwLL8/export?format=csv&range=A1:B10&gid=1451883389

https://docs.google.com/spreadsheets/d/19iRIRdnCXf2rt089pu5n2SAT_geeQ7nc8GbIn3dwLL8/export?format=csv&range=B1:B&gid=1451883389

 

export?format=pdf

export?format=xlsx
------------------------------------------------------------------------------------------------------
out:html

 

- Para evitar los %20 utiliza el bloque UriEncode

https://docs.google.com/spreadsheets/d/19iRIRdnCXf2rt089pu5n2SAT_geeQ7nc8GbIn3dwLL8/gviz/tq?range=4:6&tqx=out:csv&sheet=hoja1

https://docs.google.com/spreadsheets/d/19iRIRdnCXf2rt089pu5n2SAT_geeQ7nc8GbIn3dwLL8/gviz/tq?tqx=out:csv&sheet=hoja1

https://docs.google.com/spreadsheets/d/19iRIRdnCXf2rt089pu5n2SAT_geeQ7nc8GbIn3dwLL8/gviz/tq?tq=SELECT%20*%20WHERE%20A%20CONTAINS%20%2219%22&sheet=hoja1

https://docs.google.com/spreadsheets/d/19iRIRdnCXf2rt089pu5n2SAT_geeQ7nc8GbIn3dwLL8/gviz/tq?tq=SELECT%20A%20&sheet=hoja1

https://docs.google.com/spreadsheets/d/19iRIRdnCXf2rt089pu5n2SAT_geeQ7nc8GbIn3dwLL8/gviz/tq?tq=INSERT%20*%20WHERE%20A%20CONTAINS%20%2219%22&sheet=hoja1

https://docs.google.com/spreadsheets/d/19PQJ9PF4Y1kyyzdYJUUL0-yY9whoqy-aD45GF07jAms/gviz/tq?tq=SELECT%20B%20WHERE%20E%20CONTAINS%20%22ACTPETF%22&tqx=out:csv&sheet=hoja1

 

------------------------------------------------------------------------------

https://spreadsheets.google.com/feeds/cells/19iRIRdnCXf2rt089pu5n2SAT_geeQ7nc8GbIn3dwLL8/2/public/full?alt=json

 

 

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información