Power Automate y el desafío de las columnas con formato Fecha en Excel (y 1)

Javier Ferreiro
Anyone can Automate
8 min readFeb 15, 2020

--

Designed by Dooder / Freepik

Uno de los conectores más populares de Microsoft Power Automate es el que da acceso a ficheros Excel almacenados en Teams, Sharepoint Online y OneDrive For Businness, conocido como Excel Online (Business).

El uso indistinto de estos repositorios está muy extendido en organizaciones que ofrecen Microsoft Teams a sus colaboradores, a quienes hacen poseedores de licencia Office 365 para Empresas. Si no estáis seguro de que ese sea vuestro caso, aquí encontraréis más detalles.

Excel Online (Business) es un conector cuyo alcance y grado de madurez es algo menor que los conectores para Sharepoint u Office 365 Outlook, pero imprescindible para tod@ PowerNauta habituad@ a manejar la información en la popular hoja de cálculo del gigante de Redmond.

Esta entrada no pretende ofrecer un análisis exhaustivo de la decena larga de acciones actualmente soportados en este u otros conectores Excel, ni de los problemas y limitaciones actualmente reconocidos, pero sí poner el foco en el modo de trabajo cuando la Excel sobre la que trabajamos vía Microsoft Power Automate incluye columnas con formato Fecha. También nos servirá de excusa para comenzar a utilizar el bloque de acción ‘Seleccionar’ -Select- y dar nuestros primeros pasos manipulando el formato de fechas.

Si estás leyendo esto en una fecha posterior al 15 de enero de 2021, ¡estás de enhorabuena! Porque el equipo de desarrollo de Power Automate ha puesto el foco en varios puntos de dolor, uno de ellos el formato numérico raruno con el que históricamente se volcaban los valores de las columnas con Formato fecha a nuestros Flow de PowerAutomate.

Con anterioridad a esa fecha, en la comunidad de Power Automate eran decenas las consultas abiertas (como ésta) por Citizen Developers que buscaban respuesta a alguno de estos dos problemas:

  • Estoy intentando importar una o varias filas de mi tabla, pero el contenido de la columna fecha se presenta con un valor numérico raruno
  • Al actualizar o añadir una fila de mi tabla Excel, no doy con el formato adecuado para añadir datos a mi columna fecha

¿Que de qué estamos hablando? Veámoslo mejor con un ejemplo:

L@s chic@s de la unidad X son quienes nos comunican la fecha objetivo en la que debemos iniciar las pruebas de los sucesivos dispositivos que se lanzan al mercado. En X son muy muy viejunos y adoran almacenar la información en tablas Excel… de modo que en una de nuestras librerías de Sharepoint publicamos un fichero .xlsx para que nos vayan actualizando la siguiente tabla:

En nuestra unidad hemos desarrollado un Flow con Power Automate que se ejecuta al comienzo de cada jornada laboral, mediante el desencadenador -trigger- Recurrence, y que publica en un canal de Microsoft Teams un recordatorio con el listado de proyectos que arrancan ese mismo día:

La primera barrera a la que se enfrentan l@s Power Users es habituarse al formato interno (ISO 8601) con el que Power Automate maneja las fechas; el Flow de nuestro ejemplo está operativo desde el 1 de febrero de 2019 de lunes a viernes a las ocho de la mañana, para ello asignamos el valor que nos corresponda a la entrada ‘Zona horaria’ -Time zone-, en mi caso hora local de Madrid, e incorporamos a la entrada ‘Hora de inicio’ -Start time- el valor:

2019–02–01T08:00:00.000

A la izquierda con el editor en español, derecha con el editor en inglés

Como indicábamos antes, en el conector Excel Online (Business) hay actualmente una decena larga de bloques de acciones, uno de ellas denominada ‘Enumerar las filas de una tabla’ -List Rows Present In a Table-, que permite a nuestro Flow acceder al contenido de la tabla en cuestión…

…y con un bloque de acción ‘Seleccionar’ -Select- nos quedaremos con los valores de las fechas, con el único propósito de facilitar su visualización…

El bloque de acción ‘Seleccionar’ espera que le asignemos una ‘matriz’ -array- cuyos elementos sean objetos, y eso es justo el formato de la salida del bloque de acción ‘Enumerar las filas de una tabla’ -List rows present in a table- . El papel de este bloque de acción es el de transformar la forma de los objetos contenidos en la matriz asignada como entrada. Lo habitual es que transformarlos en otros objetos, pero en este caso los transformaremos en cadenas -strings-, como en el ejemplo de arriba: las seis filas de nuestra tabla excel convertidas en los seis valores de la columna ‘TestingDate’.

Una de las ventajas de los flujos programados -scheduled flows- es que podemos ejecutarlos en cualquier momento de forma manual. En la siguiente doble captura de pantalla veréis los valores que devolvía nuestro bloque de acción ‘Seleccionar’ -Select- correspondientes a las fechas de la tabla Excel antes de que Microsoft comenzara el despliegue de una nueva versión que elimina molesto punto de dolor -a la izquierda-, y los valores que devuelve si habéis tenido suerte y disfrutáis ya de esas mejoras -a la derecha-:

Pero la realidad es tozuda, e incorporar este cambio por las bravas significaría que los Flows viejunos que conviven con el pasado dejarían de funcionar, de modo que tú eliges:

¡En nuestra cuenta de Twitter adelantamos noticias como ésta!

Si todavía no diste el paso de disfrutar de las mejoras y optas por la opción ‘Serial Number’, encontrarás la receta original para resolverlo en:

Pero si apuestas por la opción ‘ISO 8601’, verás cómo sin necesidad de manipulación alguna ¡ya tenemos nuestras Fechas en un formato interpretable como tal por Microsoft Power Automate!

No es el formato más amigable para el ser humano, pero por fortuna Power Automate ofrece la posibilidad de manipular el formato de la fecha una vez sabe interpretarla. La magia correrá a cargo de la función WDL formatDateTime(), que podríamos incorporar a la última expresión de nuestro bloque de acción ‘Seleccionar’ -Select- si hiciera falta… aunque en nuestro caso vamos a optar por crear un nuevo bloque ‘Seleccionar’ -Select-, más acorde a nuestras necesidades de notificación, manteniendo el anterior para diagnóstico de posibles problemas. Este segundo bloque ‘Seleccionar’ trabajará sobre la forma de los objetos contenidos en la matriz de entrada, pero a diferencia del anterior los transformará en objetos con otro formato.

En la captura de pantalla veréis la expresión que utilizamos para transformar el formato de fecha ISO 8601 en otro más fácil de interpretar por el ojo humano:

formatDateTime(item()?['TestingDate'],'dd-MM-yyyy')

Como veréis, estamos pasando dos parámetros a nuestra función:

  • el primero de ellos, item()?['TestingDate'] , representa el valor de la columna TestingDate correspondiente a la iteración actual, una fecha en formato ISO 8601. Recordad que estamos declarando esta expresión en el interior de un bloque de acción de tipo bucle, que su entrada es la matriz que contiene todas las filas de nuestra tabla Excel, y que por tanto iterará una a una sobre todas ellas: item() representa a la fila de la iteración actual.
  • el segundo de ellos, 'dd-MM-yyyy' , representa el formato de salida que deseamos: día representado con dos dígitos, símbolo menos a modo de separador, mes representado por dos dígitos, símbolo menos a modo de separador, año representado con cuatro dígitos.

No es éste el único formato de salida que podríamos haber obtenido, en el siguiente enlace encontraréis distintas sintaxis para representar el año, el mes, el día, la hora, los minutos…

Como siguiente paso, asignaremos la salida de nuestro segundo bloque de acción ‘Seleccionar’ -Select- como entrada de un nuevo bloque: ‘Crear tabla HTML’ -Create HTML table-… y la salida de éste la asignaremos a su vez a la entrada ‘Mensaje’ -Message- de otro nuevo bloque de acción ‘Publicar un mensaje (V3)’ -Post a message (V3)-.

Desde el momento en que activemos nuestro Flow, éste se ejecutará de lunes a viernes a las 08:00; recorrerá el contenido de la tabla, identificará los proyectos para los que se solicita el inicio de pruebas ese mismo día, y enviará un aviso a un canal de Teams.

Y tal como prometíamos, aquí tenemos el primer aviso recibido:

Pero, un momento… el aviso muestra todos los proyectos y fechas de la tabla Excel original, no sólo aquellos correspondientes al día de hoy.

Designed by Dooder / Freepik

¿Qué demonios ha pasado?

Nada especialmente grave, por fortuna. Sucede que no hemos incorporado todavía la funcionalidad de filtro que permita quedarnos sólo con los proyectos con fecha de hoy. Para quienes estéis interesad@s, abordaremos esta problemática en un nuevo artículo: Power Automate y el filtro mágico para las tablas en Excel, que a fecha 20-ene-2021 no se ha visto beneficiado por los cambios anteriormente mencionados.

Con el caso de uso inverso, esto es, añadir desde Power Automate filas a una tabla excel que incluya alguna columna con formato Fecha, sucede algo parecido: explicaremos cómo convertir la fecha de hoy, que obtendremos en formato Power Automate, en una fecha en formato Excel; en la segunda entrada de esta serie…

¡Saludos, FlowNautas!

Lecturas recomendadas

Con el conector Excel Online (Business), no sólo podemos leer tablas de ficheros Excel que ya existían en el momento de diseñar nuestro Flow, sino también de documentos que recibimos en tiempo de ejecución, por ejemplo, como adjuntos de un correo electrónico. Analizamos en detalle ambos escenarios en…

En muy poco tiempo, Anyone Can Automate ha crecido mucho más de lo que imaginábamos. Por eso contamos con un índice de lo ya publicado, y de los artículos en los que estamos trabajando

--

--