Power Automate: Usa MS Graph para leer archivos de Excel grandes

En Microsoft Power Automate es posible usar los conectores de Excel para leer datos desde una hoja de cálculo, pero a la hora de archivos grandes puede que nos encontremos con algunos problemas.

Solo para poder listar los más importantes, tenemos que:

  1. Nuestros datos tienen que existir dentro de tablas en Excel
  2. Las tablas necesitan más tiempo para cargar dependiendo de qué tan grandes sean (4000 filas toman alrededor de dos minutos)
  3. El conector de Excel prefiere nombres cifrados para sitios, librerías y archivos de Excel
  4. Los archivos de Excel son bloqueados conforme configuramos flujos y puede tomar un tiempo para que estos bloqueos sean removidos

Si lo anterior no es un problema entonces podemos crear un flujo como el siguiente:

LEYENDO ARCHIVOS GRANDES DE EXCEL

Y si queremos ir más allá puede que nos interese echarle un vistazo al API Graph cuando queremos leer archivos de Excel más grandes. Empezaremos configurando los permisos de mi app, lo cual me da un Tenant ID, Client ID y Secret ID, las cuales usé en tres variables.

Ahora tengo que juntar los detalles del sitio desde MS Graph, lo cual puede ser hecho si configuramos una acción HTTP como podemos ver a continuación. Luego de la parte de v1.0/sites simplemente introduciremos la URL de nuestro subsitio.

Esto nos da ahora la ID del sitio que necesitamos para obtener la lista de las listas y librerías que nos interesan. Recuerda que necesitamos especificar las mismas partes de autentificación que en la llamada HTTP anterior.

Para obtener el ID si no está disponible en el contenido dinámico podemos usar la siguiente expresión:

body('HTTP')?['ID']

Llamando a las filas de Excel

Ahora puedo usar el ID regresada para la librería. He usado un Compose entre estas acciones para que contenga los detalles de la librería.

Power Automate Excel archivos grandes 1

Para crear esta acción Compose puede que necesitemos usar una acción de filtro para seleccionar la librería de documentos correcta de la acción HTTP.

Power Automate Excel archivos grandes 2

Esto debería darnos la ID de la librería. Ahora he creado una acción compuesta llamada Compose 2 para que contenga este registro de librería.

Power Automate Excel archivos grandes 3

Esto me dará ahora la solución genérica completa que me ayudará a copiar el flujo entre mi Dev, UAT y el ambiente de producción.

https://graph.microsoft.com/v1.0/sites/@{body('HTTP')?['ID']}/list/@{outputs('Compose')}/drive/root:/ExcelLargo.xlsx:/workbook/worksheets('Sheets1')/range(address='A1:J4000')/

Y finalmente puedo correr los datos de Excel con un paso «Apply to each».

En este caso, solo hice un Increment Variable para contar cada fila pero seguramente haríamos algo con estos datos, como actualizar una lista de SharePoint.

Y como podemos ver en este proceso de Power Automate para leer archivos grandes de Excel:

 1. No necesitamos tener tablas en Excel
 2. Las tablas grandes cargan más rápido (4000 filas toman alrededor de 4 segundos)
 3. Mi fljo es un proceso genérico que es fácil de copiar entre ambientes
 4. No hay bloqueo de archivo en mis archivos de Excel

Cualquier duda nos leemos abajo.

Power Automate: Usa MS Graph para leer archivos de Excel grandes
Scroll hacia arriba