A la hora de actualizar Excel por medio de un flujo de Power Automate puede que nos encontramos con que esto resulta ser un que no se ejecuta rápidamente. De ser así entonces nos aliviará saber que lo hemos estado haciendo de la forma equivocada.
En entradas anteriores hemos hablado sobre leer archivos de Excel grandes, pero hasta ahora no hemos visto algo sobre escribir a archivos de Excel. Así como pasa con la lectura rápida de archivos de Excel usando Microsoft Graph, podemos hacer lo mismo para actualizaciones de datos.+
Veamos un ejemplo con datos JSON.
Vamos a empezar creando una lista de registros JSON larga. No importa mucho qué tan complejos sean los datos, el número de registros será la parte más limitante que vamos a examinar por ahora.
Empezaré por crear una acción Compose y establecer su contenido como el siguiente JSON:
[ { "Fecha_gasto": "2020-07-18T07:00:00.000Z", "ID": 3, "Mail_usuario": "ijimenez@excelcute.com", "Monto_gasto": 3470, "Nombre_Gasto": "gasto_prod" }, { "Fecha_gasto": "2020-03-04T08:00:00.000Z", "ID": 11, "Mail_usuario": "ijimenez@excelcute.com", "Monto_gasto": 3888, "Nombre_Gasto": "gasto_prod" }, { "Fecha_gasto": "2020-04-13T07:00:00.000Z", "ID": 22, "Mail_usuario": "ijimenez@excelcute.com", "Monto_gasto": 2419, "Nombre_Gasto": "gasto_prod" }, { "Fecha_gasto": "2020-02-08T08:00:00.000Z", "ID": 37, "Mail_usuario": "ijimenez@excelcute.com", "Monto_gasto": 3417, "Nombre_Gasto": "gasto_prod" }, { "Fecha_gasto": "2020-05-21T07:00:00.000Z", "ID": 47, "Mail_usuario": "ijimenez@excelcute.com", "Monto_gasto": 3815, "Nombre_Gasto": "gasto_prod" }, { "Fecha_gasto": "2020-07-23T07:00:00.000Z", "ID": 81, "Mail_usuario": "ijimenez@excelcute.com", "Monto_gasto": 4985, "Nombre_Gasto": "gasto_prod" }, { "Fecha_gasto": "2020-07-27T07:00:00.000Z", "ID": 99, "Mail_usuario": "ijimenez@excelcute.com", "Monto_gasto": 4156, "Nombre_Gasto": "gasto_prod" } ]
Esto resultará en los datos JSON siendo mostrados en la acción Compose:

Ahora que tengo mi JSON voy a preparar un archivo de Excel en SharePoint con una tabla:

Siendo estos nuestros prerrequisitos y teniéndolos listos, es hora de completar nuestro flujo. Ahora veamos cómo podemos
Añadir filas de forma rápida a Excel.
Podría sernos útil leer primero la documentación para añadir filas a Excel para MS Graph.
Necesitaremos llamar al siguiente punto final desde un flujo:
https://graph.microsoft.com/v1.0/me/drive/root:/template_app.xlsx:/workbook/tables/Table1/rows/add
Dentro del flujo necesitaremos configurar nuestra autentificación de MS Graph.

Tras lo cual viene la parte complicada, que es el cómo creamos los registros nuevos, cosa que no será muy intuitiva, ya que necesitaremos crear un cuerpo para la petición que se vea de la siguiente forma:
{"index":1, "values": [ ["C1R1","C2R1","C3R1"...,"CNR1"], ["C1R2","C2R2","C3R2"...,"CNR2"], ] }
La llamada graph ahora simplemente añadirá los datos a la tabla y no verificará los nombres de nuestras columnas. Todo lo que tenemos que darle son los datos y estos serán copiados a nuestra tabla.
CONVIRTIENDO EL JSON A JSON
Para convertir mi JSON voy a configurar mi flujo para que use la acción Select.

En la acción que vemos en la imagen he usado el siguiente código para obtener las piezas correctas de información para cada registro en mi mapeo seleccionado.
[ @{item()['ID']}, @{item()['Nombre_Gasto']}, @{item()['Monto_gasto']}, @{item()['Fecha_gasto']}, @{item()['Mail_usuario']} ]
Esto generará el siguiente JSON por mi en exactamente 0 segundos.

Esto nos dará el formato exacto en una sola acción. Como podemos ver, esto debería ser un flujo bastante veloz ya que casi no necesitamos usar acciones. Los flujos que podían llegar a necesitar hasta 15 minutos ahora correrán en segundos.
LLAMADA AL API GRAPH
Ahora todo lo que necesito hacer es configurar la petición HTTP para actualizar mi archivo de Excel en SharePoint. Para los detalles en la llamada de MS Graph habrá que echar un vistazo a las llamadas al API Graph para escribir a archivos de Excel.

La URL en la imagen es la siguiente:
https://graph.microsoft.com/v1.0/sites/d815c931-0cd5-496c-b4b7-2478cabac246/lists/65cf7e24-993d-4e8a-a417-5375c015b6bd/drive/root:/HOLA/template_app.xlsx:/workbook/tables/Table1/rows/add
Podemos reconocer la URL de sitio, la ID de la lista y el nombre del archivo de Excel que he usado. También tenemos una tabla con el nombre Table1 en el archivo de Excel; esta es la tabla que voy a estar actualizando con mi flujo de Power Automate.
Y para terminar el cuerpo será establecido al siguiente código. Aquí es donde tomo la salida que he generado con la acción Select que usamos dentro de la petición HTTP.
{
"index": 1,
"values": @{body('Select')}
}
Y ahora cuando corro el flujo se completa en aproximadamente dos segundos. Mucho mejor que los 27 iniciales, ya no hablemos de si fueran más de 10 minutos. Esto ahora la vida a la hora de usar Power Automate para actualizar archivos de Excel rápidamente.
Cualquier duda nos leemos abajo