Power Automate: Actualizar archivos de Excel rápidamente con MS Graph

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.

Power Automate actualizar Excel rápidamente 1

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.

Power Automate actualizar Excel rápidamente 2

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.

Power Automate actualizar Excel rápidamente 3

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

Power Automate: Actualizar archivos de Excel rápidamente con MS Graph

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Scroll hacia arriba