En este artículo vemos las bases de como automatizar tareas y expandir el funcionamiento de nuestro Google Sheets a partir de código y macros de Google Apps Script.
Les dejo un par de videos donde vemos en detalle las funciones y métodos descritas en este artículo
Google apps Script
Google Apps Script o GAS es el editor de código de Sheets.
Es un programa desde el que puedo escribir código para ampliar la funcionalidad de Sheets
La primera aproximación a GAS es a través de las macros, las cuales ya conocemos
Así mismo, ya vimos una introducción al código de Google Apps Script y a sus posibilidades
Hoy vamos a hablar más específicamente de como conectar GAS con Sheets y hacer tareas básicas como escribir datos en nuestras celdas y leer datos de ellas
Abrir el editor
Para escribir nuestras macros, siempre vamos a «Herramientas»>»Editor de Secuencias de Comandos»
Ya vimos un poco más a fondo como funciona el editor en el artículo de Introducción a Google Apps Script.
Funciones
Por ahora lo más importante a saber de las funciones es que no nos van a funcionar las macros sin funciones.
Siempre nuestros comandos o instrucciones deben estar dentro de una función
Conectrse a Google Sheets
El servicio SpreadsheetApp
Ya dentro de nuestra función podemos empezar a programar
El único comando que por ahora deben aprenderse es «SpreadsheetApp»
Este es el servicio que nos permite conectarnos con Google Sheets
Cualquier cosa que implique Sheets siempre va a pasar con SpreadsheetApp
Pero SpreadsheetApp solo no sirve para nada. Necesito obligatoriamente escoger una de las opciones que me ofrece
Cuando escriben SpreadsheetApp dentro de su función y le ponen un punto, nos empiezan a aparecer todas las posibilidades de Sheets

En esta ocasión vamos a ver los básicos necesarios para poder conectarnos con los diferentes elementos de nuestros Libros
Conectarse a un archivo
Método getActiveSpreadsheet()
Una vez estamos «conectados» con Sheets es hora de conectarnos con un archivo o libro. Hay dos maneras más usadas. Escoger el libro que tengo abierto, o el «activo» o escoger un libro por su identificación
Veamos el primero:
const libro = SpreadsheetApp.getActiveSpreadsheet();
o
const ss= SpreadsheetApp.getActiveSpreadsheet();
Al guardarlo en una variable, solo tenemos que llamar el método una vez, y después usamos la variable «libro» o «ss» (de «spreadsheet»), 0 la que quieran, en realidad.
Método openById()
Otra posibilidad es la de abrir un archivo específico.
Para esto necesitamos tener la identificación del archivo la cual se encuentra en la URL
const libro = SpreadsheetApp.openById("1TpWYcwWpITOgIw3jzVNw7GvaGZzBi2hgxzTJ8jgWdbY");
Una vez tengamos ese «libro», podemos acceder a métodos específicos dentro del libro
Por ejemplo puedo:
- Compartir el archivo
- Borrar el archivo
- Borrar hojas
- Agregar hojas
Conectarse a una pestaña
Método getActiveSheet()
Una vez ya estemos «conectados» al libro nos podemos conectar a una pestaña específica bien sea la pestaña en la que estamos ubicados en ese momento o una pestaña especifica identificada por nombre
Con .getActiveSheet() por ejemplo nos podemos conectar a la hoja que el usuario actualmente tiene seleccionada
Método getSheetByName()
Con este método podemos escoger una pestaña especifica
Conectarse con una celda
Método getRange()
Una vez dentro de la hoja, podemos «jugar» con las celdas, filas y columnas de la misma
Uno de los métodos que más vamos a usar es el getRange() ya que con este es que podemos acceder a una celda o a un grupo de celdas específicas.
Simplemente entre comillas le damos la dirección del rango como lo hariamos en Sheets:
var celda = hoja.getRange('A1')
Otra forma de usarla es con el numero de la columna y de la fila asi
var celda = hoja.getRange(1,1)
Metodo getValue()
Una vez tenemos acceso a una celda, podemos querer saber que valor tiene esa celda
Para esto usamos getValue();
var valorCelda =celda.getValue();
Esto me devuelve un numero o un texto o una fecha, dependiendo de lo que haya en la celda
Método setValue()
Si por el contrario quiero escribir un dato en la celda usamos el setValue
celda.setValue(2);
celda.setValue("Hola mundo");
fecha = newDate();
celda.setValue(fecha);
Una ultima forma es llamar a un rango iniciando con la fila y la columna de inicio y dandole las filas y columnas o el largo del rango
El mismo rango del ejemplo anterior (A1:B20) quedaíra asi
hoja.getRange(1,1,20,2);
Conectarse con un rango
Ya aprendimos a conectarnos con una celda individual
Ahora nos vamos a conectar con un rango
Los metodos son muy similares
getRange() para rangos
los rangos los llamamos de la misma mnera que lo hacemos en Sheets
var rango = getRange("A1:C20")
Método getValues()
Una vez tengamos el rango, podemos llamar los valores, esta vez con el método getValues();
getValues() «graba» los valores del rango en una rreglo
var arreglo = rango.getValues();
Metodo setValues()
Al igual que cuando «imprimimos un solo valor en Sheets usamos setValues(arreglo) para incluir valores en Sheets
Es importante que el arreglo este ordenado como Sheets quiere (un arreglo dentro de otro arreglo para cada fila).
También es extremadamente importante que el rango que seleccionamos tenga el mismo tamaño en filas y columnas que el arreglo que vamos a imprimir
Aqui les dejo un ejemplo.
//Arreglo de 3 columnas y 2 filas
var arreglo = [["Nombre","Apellido","Edad"],["Juan Sebastian","Guzman",37]]
//Lo imprimimos en un rango de 3 columnas y dos filas
libro.getRange('A1:C2');
Conclusión
Programar en Google Apps Scripy y Google Sheets no es dificil. Es cuestion de practiva.
Entonces, los invito a practicar con sencillos codigos para poco a poco ir poniendonos mas complejos
Como siempre, quedo pendientes de sus preguntas y comentarios
Suscríbete para acceder al curso «Descubriendo el poder de Google Sheets» y empezar tu camino a la maestría de Sheets, Forms y Apps Script
Deja una respuesta