Cómo funcionan los Iterator y los Array Aggregator en Make

Por
Juanjo Espada

Puede que sean dos de los módulos más desconocidos para el usuario que se inicia en este mundo de las automatizaciones con Make, pero lo cierto es que las funcionalidades que nos ofrecen los iterator y los array aggregator son impresionantes.

En este artículo vamos a conocer cómo funciona cada uno de ello y, además, lo haremos con diferentes ejemplos.

¿Qué hacen un iterator y un array aggregator?

De manera simplificada, para entender su funcionamiento vamos a partir de un array de datos.

Por ejemplo, imagina que tenemos un conjunto de datos en el que tenemos los perfiles de varios clientes, con su nombre, email y teléfono. De primeras, al lanzar esa API en Make (Integromat), este va a tratar todos esos datos como un conjunto, en lugar de separarlo por clientes. Bien, pues un iterator lo que nos va a permitir es sacar “paquetitos” de ese paquete más grande y poder manipularlos. De esta manera, por ejemplo, podríamos mandar un email a cada uno de los contactos que tenemos en ese conjunto de datos, de manera automática.

Ahora imagina que lo que tenemos es un conjunto de datos, por ejemplo, una tabla de Google Shetts que ha ido registrando las ventas de un día, y queremos que, al final del día, nos mande un listado por correo de todas esas ventas. Pues para eso, utilizaremos el array aggregator, es decir, para hacer lo contrario al iterator, meter esos “paquetitos” en un paquete único.

No sé si me has seguido. Así que, como decía Samantha Villar, “es mejor vivirlo que contarlo”, por eso vamos a ver algunos ejemplos concretos.

Casos de uso de un iterator

En primer lugar, vamos a separar esos datos. Vamos a ver qué podemos hacer con un iterator en Make.

Extraemos datos de una API y los almacenamos en Airtable con un iterator

Para el primer ejemplo vamos a utilizar una API, por ejemplo, la que nos arrojaba datos de partidos de fútbol que veíamos en este otro artículo.

Lo primero que vamos a utilizar es un módulo HTTP para extraer la información.

Como puedes ver en la segunda imagen, en el apartado OUTPUT tenemos diferentes colecciones numeradas. Cada una de ellas, como ves, contiene otras colecciones que van a sacar los datos de cada uno de los partidos (liga, equipos que se enfrentan, resultado, acciones de juego…)

Si conectásemos esto directamente con Airtable, por ejemplo, sólo se pasaría una sola de estas colecciones, la primera. ¿Tendríamos entonces que ir partido a partido como el Cholo para pasarlo a Airtable? Negativo, estamos trabajando con automatizaciones. ¿Qué sentido tendría?

Para que eso no ocurra, el siguiente módulo que pondremos es un iterator.

En ese iterator elegiremos el array que queremos separar en paquetes independientes. En nuestro caso, queremos coger los datos que están dentro de “response”. Para identificar qué es un array, deberás ver que lleve el símbolo [ ].

Genial, pues ahora vamos a conectarlo todo con Airtable.

Como puedes ver en la imagen, los datos que vamos a pasar son los que hemos extraído del iterator.

De este modo, una vez lancemos la automatización, creará una fila nueva en Airtable por cada uno de los partidos, como puedes ver en la imagen de debajo.

Extraemos los adjuntos de un correo y los guardamos en nuestro Google Drive

Imagina ahora que los correos que te envía tu asesor con la documentación que presenta quieres que, automáticamente, los adjuntos queden guardados en una carpeta de Google Drive.

Podemos hacerlo, así que vamos.

En este ejemplo no voy a usar facturas, que demasiados sustos nos llevamos ya. Voy a usar imágenes. Para el caso, es lo mismo.

Lo primero que necesito es un módulo de email con la función Watch Emails. Vamos a decirle que queremos que busque los correos de un determinado remitente.

Como puedes ver en la imagen, tenemos un correo con diferentes adjuntos. Es decir, nos extrae un array con varias colecciones, cada una de ellas es un adjunto.

Como en el ejemplo anterior, si yo directamente conectase este módulo con Google Drive, sólo me guardaría uno de los adjuntos.

Por eso vamos a utilizar un iterator al que le diremos que coja, como array, los adjuntos del correo.

El siguiente paso es muy sencillo. Abrimos otro módulo de Upload File en Google Drive y cargamos nuestros archivos, desde el iterator, de esta manera.

De este modo, como puedes ver en la imagen de debajo, todos los adjuntos quedarán guardados en esa carpeta

Hasta aquí creo que queda claro el concepto de iterar los diferentes bundles que conforman un array.

Vamos a ver ahora qué podemos hacer con un array aggregator.

Casos de uso de un array aggregrator

Como comentaba un poco más arriba, un array aggregator va a hacer justo lo contrario que un iterator. Es decir, nos va a coger un conjunto de datos separados y nos lo va a agrupar en uno solo.

Vamos a ver qué podemos hacer con esto.

Extraemos datos de pedidos y los agrupamos en un listado para enviar por correo

Os pongo en contexto. Tenemos la automatización que ves en la imagen de debajo.

Esta automatización básicamente está capturando pedidos que llegan directamente a Airtable y los separa por artículos en otra tabla. Por ejemplo: tenemos una tienda de zapatillas, un cliente nos hace un pedido de dos pares (de zapatillas, no de 🥚) y ese pedido entra en la tabla de orders que tenemos en Airtable. Pero a nosotros nos interesa tener otra tabla con un listado de todos los artículos vendidos, para llevar un registro del stock y de las devoluciones.

Ahora bien, imagina que, al final del día, quiero que me llegue un correo en el que me aparezca el número de artículos que se han vendido. Pues para ello vamos a usar un array aggregator. Mira.

Vamos a crear, por tanto, el siguiente escenario:

Vamos módulo a módulo. En el primero, observamos los artículos que se han vendido hoy desde nuestra tabla de Airtable:

En este ejemplo nos arroja que, durante el día de hoy, hemos vendido 87 artículos. Cada uno de ellos es una colección aparte. Bien, pues lo que queremos ahora es que esas 87 ventas nos las agrupe en un sólo array para contabilizar las ventas.

Ahora tenemos 87 colecciones dentro de un bundle general. El siguiente paso es mandar un correo en el que contabilicemos esas ventas.

Vale. Ya hemos visto un posible uso de un array aggregator. Hay más, seguimos.

Imagina que lo que quieres no es conocer el número de los artículos que se han vendido, sino el listado de todos esos artículos.

En este caso, en lugar de usar un array aggregator, vamos a utilizar otro módulo que tenemos dentro de tools que se llama Text Aggregator.

Vamos a decirle que coja el valor de los artículos vendidos y, en las opciones avanzadas, le indicaremos que cada valor lo coloque en una fila separada.

Por último, sólo tenemos que mandar el correo cogiendo el valor que nos saca este text aggregator.

¿Qué te parece? Vale, estás preguntándote si no podemos combinarlo todo para que tengamos el número de artículos y el listado, ¿verdad?

Bueno, no sé si te lo preguntabas, pero si quieres hacerlo, tendrás que montar el siguiente escenario:

Te lo explico. En el primer módulo miramos los artículos vendidos, en el segundo los agrupamos todos en un array para contabilizarlos. El siguiente módulo los vuelve a separar para, en el text aggregator, sacar el listado de todos los productos. Por último, enviamos el email.

¿Qué te parece estos casos de uso? ¿Te resultan inspiradores?

Con estos ejemplos lo que hemos visto es cómo podemos jugar con la información que tenemos dentro de un array para manipular sus datos.

Espero que te haya resultado de utilidad.

¡Nos vemos por la comunidad!

Juanjo Espada
Automatizando tu vida

Únete a nuestra escuela y comunidad de NoCode

Más de 100h de formación NoCode en vídeo, comunidad en Slack, descuentos en las mejores herramientas y eventos de comunidad.

Ver todo lo que ofrecéis