Apps Script es un lenguaje de programación basado en javascript, por lo que la mayoría de fundamentos como variables, arreglos, bucles y más funcionan de maravilla si ya los conocen en javascript.
Sin embargo hay métodos específicos de Google Apps Script y adicionalmente, específicos a algunas aplicaciones de Google, de los cuales no hay tantos recursos online.
Hoy les explico de que se trata el método getRange de Google Apps Script, para qué sirve y todas las maneras de usarlo.
Qué es getRange y para qué sirve
Como su nombre en inglés lo indica, getRange trae un rango. Más específicamente, getRange es un método de la hoja (sheet) y que sirve para traer el objeto rango, y a su vez acceder a los métodos de ese rango, que los podemos dividir en los métodos de lectura (traer los valores, las formulas, los formatos), los métodos de escritura (ingresar valores, fórmulas, formatos) y otros (borrar el contenido, proteger, etc)
Como aplicar getRange
Como cualquier método de Google Apps Script, lo primero que debemos tener claro es sobre que elemento lo puedo aplicar
En el caso de getRange, este se aplica sobre el objeto hoja o sheet
La hoja a su vez se puede obtener con métodos de SpreadsheetApp o del libro.
Aquí algunos ejemplos de como traer mi hoja.
var hoja1=SpreadsheetApp.getActive().getSheetbyName("Datos");
var hoja2=SpreadsheetApp.getActiveSpreadsheet().getSheetbyName("Datos");
var hoja3=SpreadsheetApp.getActive().getActiveSheet();
var hoja4=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
Los dos primeros llaman a una hoja específica, mientras que los dos últimos llaman a la hoja activa, es decir, la hoja en la que el usuario esta
Cabe aclarar que si vamos a hacer un código que se ejecute «detrás de cámaras», es decir, cada día, o cuando se envíe un formulario o algo similar, siempre va a ser mejor usar el método .getSheetByName, porque no va a haber una hoja activa
Métodos para traer rangos
Una vez tenemos nuestra hoja definida, podemos proceder a traer un rango.
Hay varias maneras de hacerlo. Aquí te muestro las principales
getDataRange()
Esta es muy útil, ya que me trae el rango que empieza en la fila 1, columna 1 y va hasta donde haya datos.
Es muy útiles para traer tablas sin encabezado, o donde también queremos traer el encabezado.
Nos ahorra tener que especificar las coordenadas de inicio y fin
getActiveRange()
Esta se usa para traer el rango que el usuario ha seleccionado. Muy util para cuando queremos realizar acciones sobre una selección
getActiveRangeList()[0]
Este método es muy util cuando el usuario ha seleccionado varios rangos con Ctrl + Clic. Como devuelve un arreglo, debemos decirle [0] si queremos el primer rango seleccionado, o [length-1] si queremos el último. Lo bueno es que cualquiera de las dos opciones funcionará para cuando solo tenemos un rango selecionado
.getRangeByName()
Este es el único método que no se llama desde la hoja, sino desde el libro. Algo así
SpreadsheetApp.getActive().getRangeByName(nombreRango)
Con este método podemos llamar a cualquiera de nuestros intervalos con nombre y traer el rango
getRange
Este es el método más flexible porque puedo especificar exactamente que rango quiero traer. A continuación entraremos en detalle en este método
getRangeList
Es como el primo de getRange. Funciona muy similar, con la diferencia que trae un arreglo de rangos.
Muy útil para cuando queremos aplicar formatos o fórmulas a varios rangos separados
Construyendo el método getRange
Como ya vimos, getRange necesita primero de una hoja sobre la cual actuar
Algo así
var hoja=SpreadsheetApp.getActiveSpreadsheet().getSheetbyName("Datos");
hoja.getRange()
Sin embargo nos hacen falta los argumentos que le vamos a dar. Hay varias opciones que les cuento a continuación:
Notación clásica A1:
Es ideal para cuando la tabla siembre va a estar fija y no cambia en columnas ni en filas
getRange(Identificación del rango entre comillas)
hoja.getRange("A1:B5")
Aunque si queremos que tome todas las filas, podemos dejar la última fila abierta, tal como hacemos en Sheets, así
hoja.getRange("A1:B")
Notación para una sola columna
Para cuando solo necesitemos los datos de una columna
getRange(filaInicial,columaInicial,numeroDeFilas)
hoja.getRange(1,1,5)
Notacion para varias columnas
Este es el que mas uso porque puedo definir el ancho y largo como quiera
getRange(filaInicial,columaInicial,numeroDeFilas,numeroDeColumnas)
hoja.getRange(1,1,5,5)
Notación para rangos con nombre
Personalmente no uso tanto los intervalos con nombre como debería porque son muy utiles, pero esta es una muy buena opción para cuando tenemos nuestra tabla identificada con un intervalo con nombre
getRange(intervaloConNombre)
hoja.getRange(misDatos)
Métodos para el rango
No hay mucho que podamos hacer con el rango solo. Es util por ejemplo para listas desplegables, pero la mayoría de veces vamos a querer acceder a algo de ese rango, bien sea sus valores, sus formulas, sus formatos o mas
Teniendo esto en cuenta, una vez seleccionamos nuestro rango, estos son algunos de los métodos que mas nos van a servir (porque el rango tiene muchos métodos)
.clearContent
.copyTo()
.getFormulas
.getLastRow
.getLastColumn
.getDataRegion
.getNumberFormat
.getValues
Conclusion
getRange es una de las funciones más útiles dentro de nuestro trabajo con Google Apps Script y Google Sheets
Lo más importante es definir sobre que hoja lo aplicamos, y que métodos vamos a usar
Buenos días, cómo puedo saber según el valor introducido en una celda, por ejemplo un número de código, insertar un valor en esa misma fila pero en otra columna, por ejemplo si quiero insertar la cantidad 10 del producto Arroz. Desde ya muchas gracias. Saludos.
Hola Gustavo
Creo que no te entiendo bien la idea
Saludos!
si manejas las columnas con una variable, solo tienes que darle a la columna +1 y en values = el valor que necesitas… basicamente.
Gracias por el aporte!