//Si os resulta más fácil, se podría hacer un poco diferente para que fuera más claro como
obtener el rango en lo que se llama "notación A1"
function GetCellRange()
{
var range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A1");
Logger.log(range.getValue());
}
//Lo hagas como lo hagas, esta forma de obtener rangos es básico para hacer lecturas y
escrituras en un spreadsheet con Google Apps Script
//2. Obtener rango de una fila en concreto
function GetRow()
{
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange(1, 1, 1, sheet.getLastColumn() );
Logger.log(range.getValues());
}
//Todo lo que hacemos es pedir al spreadsheet el rango de alto 1 celda y ancho tanto como
datos tenga la hoja de cálculo.
//Usualmente no se usa esta forma para leer filas, sino que se usa lo que explicaré en el
punto 5 a fin de después ir leyendo todas las lineas que nos interesan.
//3. Obtener rango de una columna en concreto
//Obtener el rango de una columna es algo más sencillo de lo que seria obtener una fila,
si por ejemplo quisiéramos obtener la fila de datos desde la posición A1 de tres elementos
deberíamos hacer algo de este estilo:
function GetColumnRange()
{
var range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(1, 1, 3);
Logger.log(range.getValues());
}
//Si quisiéramos obtener la columna entera solo deberíamos hacer un pequeño cambio en
el código:
function GetColumnRange()
{
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange(1, 1, sheet.getLastRow());
Logger.log(range.getValues());
}
//De esta forma obtendríamos toda la columna hasta donde la hoja de cálculo tuviera valores.
//4. Obtener rango de una zona en concreto
function GetData()
{
var range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(1, 1, 3,4);
Logger.log(range.getValues());
}
//Con este sencillo código obtendríamos el rango de celdas que estaría comprendido en
la celda A1, con un alto de 3 filas y un ancho de 4 columnas.
//5. Obtener rango de toda la hoja
function GetAll()
{
var range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getDataRange();
Logger.log(range.getValues());
}
//Tengo que reconocer que getDataRange es una de mis funciones preferidas, básicamente
lo que hace es obtener el rango para todas las celdas que haya sido escritas. desde la
posición 1,1 hasta el máximo de columnas y filas que tenga la hoja de cálculo escritas.
Muy útil cuando queremos procesar los datos de forma óptima ya se para hacer la lectura
o escritura óptima dentro de un spreadsheet.
//6. Obtener rango de lo que el usuario ha modificado
function onEdit(e)
{
var range = e.range;
Logger.log(range.getValues());
}
//Cuando el usuario modifica algo de una celda, se ejecuta el evento onEdit. Como parámetro,
recibimos la información de lo que se ha modificado y evidentemente, podemos obtener el
rango de dicha información.
//Esta funcionalidad puede ser básica cuando queremos controlar lo que nuestro usuario
introduce o cuando queremos montar un sistema de timestamp ( por poner ejemplos)
//7. Obtener rango de lo que un usuario ha respondido en un formulario
function onFormSubmit(e)
{
var range = e.range;
Logger.log(range.getValues());
}
//Si os fijáis es lo mismo que el onEdit pero para el caso de cuando un formulario es
rellenado. La gran diferencia es que generalmente el usuario modificará solo una celda
a la vez mientras que los formularios lo que se modifica es toda una fila de golpe.
En ambos casos el código es el mismo dado que lo que recibimos es un rango en las
dos situaciones.
//8. Obtener rango de lo que otro programa ha modificado en nuestro spreadsheet.
function onChange(e)
{
var range = e.range;
Logger.log(range.getValues());
}
//La idea es la misma que con el onEdit o el onFormSubmit pero cuando los cambios
que se producen en el spreadsheet no vienen ni del usuario ni de un formulario,
generalmente, cuando otro software ( en muchas ocasiones Zapier por poner solo un ejemplo )
introduce información en nuestro spreadsheet.
//Se os ocurre alguna otra situación en que sea útil y diferente obtener el rango?
//Quedo abierto a vuestras dudas y sugerencias.