Power Automate: Obtén versiones anteriores de objetos en listas de SharePoint

En la actualidad no existe una acción en Power Automate para acceder al historial de versiones de objetos en listas de SharePoint (o documentos en general). Aun así, existe una forma en que podemos lograr esto por medio de Automate, incluyendo todos los valores viejos de columnas. La pregunta en sí es si hay una forma en que el flujo pueda detectar si una cierta columna ha cambiado.

Por suerte, tenemos todo lo necesario para lograr esto con ayuda de una acción ya conocida: «Send an HTTP Request to SharePoint«.

Nuestros pasos a seguir serán los siguientes:

  1. CONFIGURAR ACTIVADOR CON CONDICIÓN.

Lo primero será ir a los Ajustes del paso activador:

Y añadiremos la siguiente condición para asegurarnos de que el Flow solo corre cuando la versión NO ES 1.0:

not(contains(triggerBody()?['{VersionNumber}'],'1.0'))

2. DECLARAR UN ARRAY PARA VER LA HISTORIA

Cuando tengamos el activador funcionando, declararemos una variable array donde almacenaremos toda la información histórica más adelante.

3. CALCULAR EL NÚMERO ANTERIOR

El siguiente paso será calcular el número anterior usando una acción Compose. Podemos hacer esto por medio de la subexpresión con una función int anidada para convertir el número de versión a un integral (de esta forma el ‘sub’ tendrá dos integrales con los cuales trabajar).

sub(int(triggerBody()?['{VersionNumber}']),1)
Power Automate versiones Sharepoint 1

  4. LLAMAR A SHAREPOINT Y OBTENER EL HISTORIAL DE VERSION DE LA LISTA DE SHAREPOINT

Para obtener la versión de nuestro objeto de lista haremos la llamada HTTP y pasaremos el ID al objeto de lista. Notaremos que el título de la lista es el Display Name y no el System Name/URL. Por lo cual aun si usamos un nombre como «sitioweb» para obtener una URL simple, el llamado HTTP necesitará «Sitio Web».

Power Automate versiones Sharepoint 2

  5. ANALIZAR EL RESULTADO JSON

Este paso es un tanto más confuso si no hemos trabajado con JSON anteriormente. Antes de añadir la acción misma, vamos a guardar el Flow y lo correremos para probar si la llamada HTTP para obtener las versiones funciona. Luego de esto copiaremos el bloque JSON entero de la sección Body bajo la parte de salidas:

Después de esto volveremos para editar el flow y añadiremos la acción Parse JSON. Añadiremos el cuerpo de salida de la llamada HTTP como su contenido y daremos click en «Use sample payload…» para pegar el código JSON que acabamos de copiar. Esto le hará saber al flujo cómo es que se ve la estructura de datos y cómo debe analizarla.

6. LOOP EN TODAS LAS VERSIONES

Nuestro paso final será crear un loop a través de las versiones que acabamos de analizar y detectar cuál es la que queremos para trabajar. Para este ejemplo estoy guardando el valor de la columna «Office Location» para ver donde algo fue movido.

Empezaremos por crear un «Apply for each» y le daremos los resultados del Parse JSON ya que contiene todas nuestras versiones. Luego de esto, vamos a guardar en un array los resultados de la corrida.

Power Automate versiones Sharepoint 3

Y eso sería todo. Con esta base podemos continuar creando lógica para comparar con lo que ha sido cambiado y activar acciones en base a las versiones del item con Power Automate y Sharepoint.

Cualquier duda, nos leemos abajo.

Power Automate: Obtén versiones anteriores de objetos en listas de SharePoint
Scroll hacia arriba