Entendiendo el getRange en Google Apps Script y Google Sheets

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

4 comentarios en “Entendiendo el getRange en Google Apps Script y Google Sheets”

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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Pin It on Pinterest

Share This