Power Automate Desktop: Enviar correo con datos de Excel

El día de hoy vamos a estar explorando cómo podemos enviar correos desde Power Automate Desktop utilizando una tabla de Excel. Esto evitará que uses macros para realizar la operación.

Construyendo nuestra tabla de Excel.

Para este caso, tenemos nuestra tabla de Excel en donde tenemos una columna con direcciones de correo a las cuales vamos a estar enviando la información que tenemos en las demás columnas y también vamos a adjuntar un archivo que tenemos marcado en una de las columnas.

Como podemos notar, la columna de Adjunto viene como una ruta de dirección.

Vamos a ir a Power Automate Desktop, donde vamos a tomar la acción «Launch Excel». En la dirección del documento vamos a seleccionar la ruta en donde tenemos nuestro archivo de Excel. Adicional a esto, vamos a seleccionar que se abra como archivo de Solo Lectura y también vamos a desactivar que la instancia se haga visible.

Nuestro paso deberá verse así:

Power Automate Desktop enviar correos 6

Adecuando las variables de salida en el Flujo.

Antes de guardar, vamos a cambiar el nombre de la variable de %ExcelInstance% a un nombre de nuestra preferencia. En este caso, lo voy a llamar %ExcelEnvios% (recuerda que es importante que el nombre que elijas esté entre signos de porcentaje). Ahora sí vamos a darle en Guardar y tendremos el paso con el cual empezaremos a realizar toda la operación.

Lo siguiente es que vamos a agregar un paso «Close Excel» por debajo de nuestro «Launch Excel», el cual vamos a guardar sin cambiar nada más solo como buena práctica para que no quede el archivo de Excel abierto.

Otra buena práctica que podemos implementar es añadir una acción «Set active Excel worksheet» en medio de las dos acciones anteriores. A esta acción le vamos a decir que trabaje sobre la primera hoja (Index).

Esta acción no nos va a generar variables, sino que solo forzará a Excel a trabajar en una hoja en específico.

Leyendo nuestra tabla de datos

Nuestro siguiente paso será saber el largo y ancho de nuestra tabla para saber el área en la cual vamos a trabajar, lo cual vamos a conseguir con un paso «Get first free column/row from Excel worksheet» después de nuestro «Set active Excel worksheet». Como podremos notar, esto nos generará dos variables: «FirstFreeColumn» y «FirstFreeRow», las cuales van a ser dos números en los cuales voy a saber cuál es mi primer columna y fila con disponibilidad para escribir.

Estas dos variables nos harán automática la lectura de datos de la tabla, lo cual vamos a ver en un momento. De mientras vamos a guardar este paso y ahora vamos a empezar a pasar valor por valor desde nuestra tabla, pero primero vamos a pasar la tabla a Power Automate.

Vamos a agregar un paso «Read from Excel worksheet» después de nuestro «Ger first free column/row from Excel worksheet». Este paso nos permitirá leer una tabla de Excel directamente, ya sea por una celda o bien un rango de celdas, que es lo que nos interesa.

Nuestro rango empieza en la celda A-1, por lo que nuestra columna y fila de inicio serán 1 y 1. Para saber cuál es la fila y columna final de nuestra tabla, vamos a utilizar las variables %FirstFreeColumn% y %FirstFreeRow%, a las cuales vamos a agregar «-1» (siempre dentro de los porcentajes) para que nos traiga la fila y columna anteriores a la última. Esto nos traerá los valores de Excel que buscamos de manera automática.

Power Automate Desktop enviar correos 7

En la parte de Avanzados vamos a configurar que la primera línea de rangos tenga las columnas para que no la tenga en cuenta. Con esto vamos a poder leer toda la tabla sin necesidad de cambiar valores en caso de que la tabla cambie y crezca.

Power Automate Desktop enviar correos 8

Vamos a guardar la acción y con esto ya estamos listos para empezar a leer la información y realizar los envíos.

Enviando los correos con Outlook y Power Automate Desktop

Lo siguiente que tendremos que hacer es ir a las acciones de Outlook y vamos a agregar un «Launch Outlook» después de «Read from Excel worksheet» para lanzar una instancia de Outlook nueva y luego de guardarla (no hace falta hacer cambios) vamos a agregar un paso «Close Outlook» luego de este para que Outlook no permanezca abierto.

Power Automate Desktop enviar correos 9

Hasta ahora nuestro flujo deberá verse así:

Como tenemos que hacer una iteración fila por fila de los valores que tenemos aquí, vamos a crear una variable nueva desde un paso «Set variable» que colocaremos entre «Read from Excel worksheet» y «Launch Outlook».

A esta variable la voy a llamar %i% ya que es el itinerante dentro de todo el flujo y le indicaremos que %i% tiene que ser 0 porque los índices en Power Automate Desktop deben ser 0. Esto quiere decir que el primer valor es 0 mientras que el segundo valor será 1 y así de forma consecutiva.

Ahora vamos a ir a los pasos de Loops y vamos a tomar un paso «Loop condition» entre los pasos para iniciar y cerrar Outlook.

Itinerando dentro de un Loop

El primer operando que vamos a seleccionar va a ser nuestra variable %i%. Nuestro operador va a ser «Less than» ya que esta itinerancia la vamos a correr mientras que %i% sea menor que nuestro segundo operando, el cual va a ser .RowsCount que se encuentra bajo ExcelData.

Power Automate Desktop enviar correos 5

En este caso, en el momento en que %i% deje de ser igual a la cuenta de filas de mi archivo de Excel, voy a terminar mi procedimiento. Vamos a guardar y vamos a pasar al último paso, por lo que iremos de vuelta a los pasos de Outlook y vamos a agregar un paso «Send email message through Outlook» entre nuestro Loop y el final de nuestro flujo.

Power Automate Desktop enviar correos 4

Para el parámetro de Account vamos a pasar la dirección de correo directamente. Para «To», como vamos a tomar el destinatario desde nuestra tabla de Excel, voy a tomar primero %ExcelData% y le vamos a agregar entre llaves cuadradas la variable «[i]» para que me obtenga la fila %i% que va corriendo dentro del loop.

Después de esto, tengo que revisar cuántas columnas corresponden a este índice para poder obtenerlo directamente desde el archivo de Excel. Contando las filas que tengo en mi archivo me encuentro que tengo 8, a lo cual siempre le tendremos que restar 1 ya que el índice en Power Automate inicia en 0, por lo que tendríamos que decir que es «[i][7]» (índice 7) para poder traer los correos desde este punto.

Power Automate Desktop enviar correos 3

Los demás campos como Subject serán variables según nuestra preferencia. En el caso del Body, como yo quiero enviarle a mi cliente información de su balance y última transacción voy a escribir lo siguiente:

Power Automate Desktop enviar correos 2

Estamos usando ExcelData pero con los índices 5 y 6 ya que estos corresponden a las columnas con los valores que quiero enviar. Con esto hecho, vamos a poder enviar el cuerpo del correo con variables directamente desde mi tabla de Excel.

Agregando datos adjuntos al correo

Si yo quisiera añadir archivos adjuntos, estos siempre van a ir posicionados como si fuera la ruta completa del archivo. Como podremos recordar, estas rutas las tenemos ya en nuestra tabla de Excel y se encuentran en la columna siguiente a la de envío de correos, por lo tanto sería el índice 8.

Power Automate Desktop enviar correos 1

Vamos a darle en Guardar y lo único que tendríamos que hacer para finalizar es incrementar nuestra variable %i%. Vamos a tomar un paso «Increase variable» que irá después de «Send email message through Outlook» ya que de otro modo nos quedaremos en ese loop de manera indefinida.

Entonces, vamos a seleccionar la variable %i% e incrementaremos su valor por 1 cada vez que el loop avance.

Power Automate Desktop enviar correos 10

Ahora sí vamos a poder enviar de manera correcta y sin problemas.

Cualquier duda, nos leemos abajo.

Power Automate Desktop: Enviar correo con datos de Excel
Scroll hacia arriba