Estos son los pasos a realizar para conectar Google Sheets a un Webhook y automatizar tareas cada vez que llevas a cabo cambios en celdas de una hoja de cálculo.

El Editor de secuencias de comandos de Google Sheets es una herramienta de desarrollo con la que poder incorporar nuevas funcionalidades a hojas de cálculo, como la posibilidad de ejecutar llamadas a Webhooks o APIs para enviar o recibir información desde otros servicios.

En este artículo aprenderás a configurar determinadas celdas o columnas para que cada vez que lleves a cabo un cambio en ellas, ejecute una tarea automática de Botize.

Lo que haga finalmente la tarea automática dependerá de las acciones que tú mismo decidas indicar dentro de Botize. En este caso utilizaremos una fórmula para enviar los datos de la fila a Telegram. En tu caso puedes optar por esta o cualquier otra automatización que te ofrece Botize. El proceso y los pasos que aquí aprenderás seguirán siendo los mismos y te servirán para cualquier automatización que necesites.

Escenario: Vamos a automatizar una tarea que publique en Telegram cada fila de una hoja de cálculo en el momento en que modifiques alguna de sus celdas.

Aprenderás además a personalizarla para que ejecute cualquier otra tarea o lo haga solo con determinadas celdas y columnas.

Nivel de dificultad: Bajo. Aunque tendrás que copiar y pegar un código escrito en JavaScript no necesitas conocimientos de programación.

Tiempo de implementación: Aproximadamente 15 minutos.


Al final de este post tienes un vídeo con todos los pasos que se van a seguir y que te ayudará a aclarar cualquier duda que puedas tener.

Crea una tarea automática

La automatización que se activará en el momento en que edites una celda de la hoja de cálculo correrá a cargo de Botize. Si ya tienes una tarea automática solo necesitas conocer la URL de esta, en caso contrario puedes hacer clic en este enlace para seguir el ejemplo de la guía:

https://botize.com/task/5613

Convierte la tarea en Webhook

Las tareas de tipo Webhook (o petición GET/POST como se llaman en Botize) se diferencian de las tareas convencionales en que en lugar de estar programadas para ejecutarse cada x minutos u horas, estas se activan cuando reciben una llamada externa.

Debes hacer 2 cambios para convertir cualquier tarea en Webhook:

  1. Hacer un clic en el primer paso y dentro de este seleccionar la operación «Al recibir una petición GET/POST«.
  2. También dentro del primer paso, definir en la columna «Parámetros» y «Nombre para mostrar» los parámetros que recibirá la tarea y nombre de estos respectivamente.

La fórmula de ejemplo ya viene configurada de esta manera por lo que no es necesario que hagas ningún cambio.

En la imagen anterior puedes ver que la tarea automática tiene definidos 4 parámetros con los nombres «column_a«, «column_b«, «column_c» y «column_d«, lo que le permitirá trabajar con los valores de cada una de estas columnas de la hoja de cálculo.

Añade más parámetros en caso de que necesites más columnas.

Obtener la URL de la tarea

Puedes obtener la URL de la tarea haciendo clic en el botón «Obtener la URL de esta tarea» que tienes en la parte superior como se muestra en la siguiente imagen.

Configura la hoja de cálculo

Configuremos ahora la hoja de cálculo para conectarla a la tarea automática y especificar qué celdas serán las encargadas de activarla.

Esta es la hoja de cálculo de ejemplo, donde hay distintos productos, cada uno de ellos con su nombre, dirección, imagen, precio y una columna para indicar el stock.

Para este caso la idea es que al rellenar la celda de Stock, indicando un número, automáticamente el producto se mande a publicar a un canal de Telegram en ese preciso momento.

Por lo tanto la automatización debe aplicarse a la columna 5 o columna E («Stock«).

El primer paso es hacer clic en la opción «Herramientas» del menú superior y seleccionar la opción «Editor de secuencias de comandos«.

Haz clic sobre «Proyecto sin título» para darle un título al proyecto.

Borra ahora toda la función myFunction() que viene de ejemplo y pega en su lugar el siguiente código:

function atEdit(e) {
 
 var tabs = [];		// Track changes only in this tabs
 var columns = [];	// Track changes only in this columns
 var url = "";		// Botize Webhook Task
 
 var activeSheet = e.source.getActiveSheet();
 var col = e.range.getColumn();
 var row = e.range.getRow();
 var sheet_name = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
 
 if (e.range.getValue()=="" || tabs.indexOf(activeSheet.getName()) == -1 || columns.indexOf(col) == -1)
   return
 
 e.range.setBackground("blue");
 
 const params = {
   method: "post",
   contentType: "application/json",
   payload: JSON.stringify({
     "edited_column":col,
     "edited_row":row,
     "edited_sheet_name":sheet_name,
     "edited_value":e.range.getValue(),
     "column_a":activeSheet.getRange(row,1).getValue(),
     "column_b":activeSheet.getRange(row,2).getValue()
   })
 }
 
 var sendMsg = UrlFetchApp.fetch(url,params);
 var response = JSON.parse(sendMsg);
 
 e.range.setBackground("white");
 
 if (response.meta.code!=200) {
   e.range.setBackground("red");
   e.range.setNote(sendMsg);
 }
}

A continuación indica en la línea número 3 el nombre de la hoja en la que quieres incluir esta automatización:

var tabs = ["Hoja 1"];

En la línea número 4 el número de columna o columnas que al modificarse harán que se ejecute la automatización:

var columns = [5];

Por último en la línea número 5 indica la url de tu tarea de Botize.

var url = "https://botize.com/webhook/…";

A continuación inserta después de la línea 24 tantas columnas como necesites. En nuestro caso añadiremos las columnas C y D, pues contienen información (imagen y precio) que nos interesa que se envíen a la tarea automática.

Guarda los cambios (clic en el icono de guardar) y en el menú izquierdo selecciona la opción «Activadores«.

Ahora haz clic en el botón «Añadir activador«.

Aquí seleccionaremos en el campo «tipo de evento» la opción «Al editarse» y en el campo «Notificación de errores» la opción «inmediatamente«.

Tras esto haz clic en el botón «Guardar«.

Google te pedirá que verifiques la aplicación que acabas de crear. Como la acabas de crear y aún no ha sido certificada por Google, deberás hacer clic en «Configuración avanzada» y posteriormente «Ir a Telegram (no seguro)» (o el nombre que le hayas dado a tu aplicación).

Probando la automatización

Has completado todos los pasos. Para ver el resultado puedes ir a cualquier celda de la columna «Stock» e introducir un valor.

En unos segundos la tarea se ejecutará y publicará el producto correspondiente a la fila editada en Telegram.

En el siguiente vídeo puedes ver el proceso completo que se ha seguido, incluyendo la creación de la tarea automática.

Dejar un comentario

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