Conexión de Action Network y Google Sheets con webhooks y n8n
Written by Socialism.tools Admin
Published enero 17, 2022

Recientemente, quise conectar un formulario de la Red de Acción que recoge correos electrónicos a una Hoja de Google. La hoja está diseñada para que los movilizadores encuentren a los usuarios que firmaron el formulario de la Red de Acción y se pongan en contacto con ellos para una incorporación de alto nivel al Comité Técnico Nacional de la DSA. Action Network hizo que fuera bastante fácil empezar con los webhooks, pero n8n puede ser intimidante para aquellos que no están familiarizados con las estructuras de datos. Aunque no soy un experto en n8n, puedo mostrar lo que hice para pasar los datos de la Red de Acción a Google Sheets con un mínimo de complicaciones.

Obtener n8n

Ejecuto n8n en Cloudron, una forma de instalar docenas de aplicaciones con un solo clic y no preocuparse por los parches, las copias de seguridad o cualquier otra tarea de mantenimiento. También puede apoyar el producto con licencia de código justo de n8n con una suscripción a n8n.cloud, y no preocuparse por la instalación o algunas cuentas de servicio en absoluto.

Autorizar n8n

El primer paso es configurar las credenciales en n8n para que pueda hablar con Action Network y Google. Action Network tiene instrucciones para crear un webhook aquí (necesitarás los permisos adecuados) y n8n tiene instrucciones para crear una credencial de Google aquí (recomiendo usar una cuenta de servicio).

Cree su webhook

Ahora a la Red de Acción. En la parte superior de la pantalla, junto a Empezar a organizar, haga clic en Detalles y, a continuación, en API y sincronización. A la izquierda, debería ver el botón para crear un nuevo webhook.

Ahora, volvamos a n8n. Haga clic en el icono naranja + para añadir un nuevo objeto. Busque el objeto Webhook (con el rayo naranja, que indica que iniciará el flujo de trabajo) y selecciónelo.

Cambie el tipo de solicitud a POST. Copie la URL de la prueba. No toques nada más.

Vuelva a la pestaña de la Red de Acción y pegue la URL de prueba. No le des a guardar todavía - vuelve a n8n. Pongamos el resto de nuestro flujo.

Gestión de datos

La Red de Acción, como muchos otros sitios, devuelve los datos en formato JSON. No podemos simplemente exportar el JSON directamente a Sheets - Sheets espera que los datos se vean como, bueno, una hoja de cálculo. Para que estos datos tengan el aspecto que necesita Google Sheets, utilizaremos el bloque Set de n8n junto con expresiones. Las expresiones son una parte compleja pero increíblemente poderosa y crítica de n8n. Las expresiones permiten definir mediante programación el valor de un campo determinado. Por ejemplo, al rellenar el campo de correo electrónico en el bloque de configuración, no se debe escribir algo sin más, ya que se trata de automatizar. Necesitamos una expresión que diga "este campo (email) tiene un valor de (ubicación JSON, user.email_addresses[0].address)".

Curso intensivo de JSON

Aquí tienes un curso intensivo de 90 segundos sobre JSON. JSON es un formato para definir datos. Se ve así:

JSON en la página "Working with JSON" de Mozilla

Para identificar los poderes del Hombre Molécula, podemos decir n8n members[0].powers. Se utiliza la notación de puntos para "bajar" un nivel en el JSON. Los poderes son un subconjunto de un objeto Members. Un miembro puede tener más de un Power, y puede haber más de un Member. Para especificar una entrada específica en un array, usamos paréntesis y empezamos en 0. members[0] devuelve Molecule Man, members[1] devuelve Madame Uppercut, y así sucesivamente.

Esto es importante para nuestro caso porque los activistas de la Red de Acción pueden tener más de una dirección de correo electrónico. Volvamos a n8n y utilicemos nuestros conocimientos de JSON para transformar nuestro blob JSON de Action Network en un objeto que le guste a Google Sheets.

Conexión de los bloques

Conecta tu bloque Webhook a tu bloque Set, y luego el bloque Set al bloque Sheets. Debería ver un círculo que indica el inicio de un flujo de datos y un rectángulo que indica dónde termina. Al arrastrar un bloque, los flujos deben moverse con él.

n8n en acción con una configuración minimalista

Veamos qué pasa. Haga clic en Ejecutar flujo de trabajo en la parte inferior de la pantalla. El spinner debería empezar a cargarse, y deberías ver un mensaje indicando que el webhook está esperando los datos de la prueba. Vuelve a Action Network, selecciona el formulario o la acción para la que quieres activar un webhook y pulsa guardar. Ahora debería verlo en la parte izquierda de la pantalla bajo Webhooks. Haga clic en la prueba y observe la parte superior derecha de la pantalla. Debería ver un mensaje de éxito.

Si no ves un mensaje de éxito

Es posible que haya visto este error ("Hubo un error al probar su webhook):

Asegúrate de que el tipo de datos está configurado como POST, la URL es correcta y el spinner sigue animándose cuando pulsas test. El webhook de prueba de n8n sólo se activa durante un breve periodo de tiempo después de que se haga clic en la ejecución del flujo de trabajo. Si el flujo de trabajo de ejecución no está en marcha, el webhook no funcionará. Action Network envía los webhooks de prueba al instante.

Buceo de datos

Ahora que ha realizado una prueba de webhook con éxito, puede abrir el nodo Webhook de nuevo para ver los datos. No necesitamos preocuparnos por las cabeceras por ahora, queremos mirar la sección derecha llamada Cuerpo. Esto nos muestra los datos que AN envió. Puedes ver todos los datos que necesitamos:

"Nombre":"John", ... "email_addresses": [ {"primary": true, "address": "jsmith@mail.com" }

Ahora, pasemos al bloque Set. Haga clic en Añadir valor y seleccione dos veces la cadena para nuestro nombre y las cadenas de correo electrónico. Haga clic en el icono de engranaje situado junto a la casilla Valor que aparece junto a su cadena de correo electrónico. Seleccione crear expresión. Escriba email_address en el cuadro de búsqueda del selector de variables. Verás que aparece una expresión generada automáticamente. Sin embargo, si miras el resultado, verás que no devuelve un solo correo electrónico como necesitamos.

Ser expresivo

Tenemos que editar el para seleccionar la parte del JSON que necesitamos. Queremos la primera dirección de correo electrónico, así que añade [0] para seleccionar el primer objeto de correo electrónico. Luego añade .address para seleccionar la propiedad address del primer objeto de correo electrónico. Ahora debería ver jsmith@mail.com como resultado.

Repita este proceso de creación de una expresión para Nombre, sin la modificación - no necesita hacer nada para que le dé el resultado que desea. He añadido algunos campos adicionales, y se ve una vista previa cuando se prueba el webhook:

Si quieres, puedes volver a probar el webhook (no olvides pulsar ejecutar) para ver que tu objeto Set cambia los datos tal y como le hemos dicho. Ahora que nuestros datos están en funcionamiento. utilicemos el nodo Sheets para enviarlo a nuestra hoja de Google.

Configuración de las hojas

Seleccione su credencial de Google y seleccione Cuenta de servicio. Su recurso es una Hoja (Una hoja de cálculo es el archivo completo), y queremos añadir nuevas filas al final del archivo.

La selección de una gama puede ser un poco complicada. Google utilizará por defecto la primera hoja del índice (la de la izquierda) a menos que se especifique una diferente. La forma más fácil es incluir el nombre con un ! antes del rango, al igual que en Google Sheets (a diferencia de Sheets, no es necesario encerrar el nombre entre comillas si tiene espacios).

Me gusta poner el modo de entrada en "User Entered". Esto tratará los datos como si alguien los hubiera introducido, y como tal, los formateará y realizará otros cambios de la manera esperada. En el modo Raw, los valores se insertan tal cual y no se modifican.

No olvide guardar su flujo de trabajo, y asegúrese de que los ajustes en las hojas (como las validaciones de datos y el formato condicional) están configurados para ejecutarse en una columna completa en lugar de un rango (puede utilizar el formato D2:D para dirigirse a una columna menos la fila del índice, pero incluir nuevas columnas automáticamente).

Terminando

Ahora, vuelva a la Red de Acción y asegúrese de que su webhook a su webhook de producción está activado. Entre en el formulario con un nuevo correo electrónico (las actualizaciones de los activistas existentes no se impulsan) y espere unos diez minutos. ¡Deberías ver los datos del webhook llegar a la hoja!

Si no lo hace, o no viene como quieres, hay algunas cosas que comprobar. En primer lugar, asegúrate de haber esperado realmente diez minutos y de haber introducido toda la información nueva en el formulario de la Red de Acción. A continuación, abra n8n, guarde su flujo de trabajo y haga clic en "Ejecuciones" a la izquierda. Puede abrir el estado de cualquier ejecución utilizando el icono de la carpeta de la derecha, y reintentar los fallos con su configuración actual.

Si todo lo demás falla, y estás recibiendo los datos del webhook de action network, haz un post detallado en los foros de n8n (si no recibes respuesta en unos días, envíamelo). También puedes ver el JSON de mi proyecto n8n e intentar importarlo.

Pin It on Pinterest