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
- 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.

_________________________________________________________________
- 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á.

- 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.

____________________________________________
- Más información.
- 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
- Bajar toda la Hoja en csv:
https://docs.google.com/spreadsheets/d/19iRIRdnCXf2rt089pu5n2SAT_geeQ7nc8GbIn3dwLL8/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/19vvvvvvvvvvvvvvvvvvvvvvvGbIn3dwLL8/gviz/tq?tq=SELECT%20*%20where%20A%20contains%20%2219%22
https://docs.google.com/a/google.com/spreadsheets/d/19vvvvvvvvvvvvvvGbIn3dwLL8/gviz/tq?tq=select%20A%20
https://docs.google.com/spreadsheets/d/19vvvvvvvvvvvvvvvvvvvvvvvGbIn3dwLL8/gviz/tq?tq=INSERT%20*%20where%20A%20contains%20%2219%22
|