Hola a todos,
En esta temporada estoy centrándome en escribir posts de Power Automate y Power Apps que sean prácticos, útiles y que puedan aplicarse de forma directa a situaciones reales.
En este caso vamos a crear un flujo que detectará si se han modificado determinadas columnas de una lista de SharePoint y enviará automáticamente un correo con la información del elemento actualizado.
Para el ejemplo utilizaremos la lista ALTIORA_CLIMA_COMENTARIOS, que contiene, entre otros, los siguientes campos:
- ID_COMENTARIO
- ID_EMPLEADO
- FECHA
- COMENTARIO
Nuestro objetivo será controlar exclusivamente las columnas FECHA y COMENTARIO.
Cuando alguna de ellas cambie, recibiremos un correo indicando:
- El elemento modificado.
- La columna o columnas que han cambiado.
- La fecha actual.
- El comentario actual.
- La persona que realizó la modificación.
- La fecha y hora en la que se produjo.
Si se modifica cualquier otra columna de la lista, el flujo no enviará ninguna notificación.
Esta es la lista de SharePoint:

Antes de crear el flujo debemos comprobar que el historial de versiones está activado en la lista.
Para ello, entraremos en:
Configuración de la lista > Configuración de control de versiones
En la opción:
¿Desea crear una versión cada vez que edite un elemento de esta lista?
Seleccionaremos Sí.
También podemos establecer el número de versiones que queremos conservar. En este ejemplo he indicado un máximo de 100 versiones.
Este paso es necesario porque la acción que utilizaremos para detectar las columnas modificadas necesita que la lista tenga activado el control de versiones.

Y ahora ya podemos crear el flujo, os dejo los códigos justo después de las imágenes y ahora os dejo la explicación:
El flujo se inicia cada vez que se modifica un elemento de la lista ALTIORA_CLIMA_COMENTARIOS. Al utilizar el desencadenador Cuando se modifica un elemento o un archivo, el proceso no se ejecutará cuando se cree un nuevo registro, sino únicamente cuando se cambie alguno de los datos de un elemento existente.
A continuación, la acción Obtener cambios para un elemento o archivo (solo propiedades) analiza la modificación realizada. Para ello, utiliza el identificador del elemento y los tokens de inicio y fin proporcionados por el desencadenador.
Estos tokens delimitan la modificación que acaba de producirse y permiten que Power Automate determine qué columnas han cambiado. La acción devuelve un resultado verdadero o falso para cada campo de la lista. En nuestro ejemplo, solo nos interesa comprobar las columnas FECHA y COMENTARIO.
Después, una condición comprueba si se ha modificado alguna de esas dos columnas. El flujo continuará cuando haya cambiado la fecha, el comentario o ambos. Si la modificación afecta únicamente a otro campo de la lista, el proceso finalizará sin enviar ninguna notificación.
Cuando la condición se cumple, la acción Redactar construye un mensaje indicando exactamente qué campo se ha modificado. Dependiendo del cambio realizado, el resultado podrá indicar que se ha modificado FECHA, COMENTARIO o las dos columnas al mismo tiempo.
Finalmente, el flujo envía un correo electrónico con toda la información relevante del elemento:
- Su identificador.
- La columna o columnas modificadas.
- La fecha que contiene actualmente.
- El comentario actual.
- La persona que realizó el cambio.
- La fecha y hora de la modificación.
De esta forma, no recibiremos un aviso por cualquier actualización de la lista. El correo solo se enviará cuando se modifique alguno de los campos que hemos decidido controlar.
Para que la acción Obtener cambios para un elemento o archivo funcione correctamente, es necesario activar previamente el historial de versiones de la lista de SharePoint. Esta configuración permite que SharePoint registre las modificaciones y que Power Automate pueda identificar las columnas afectadas.
El flujo informa del campo modificado y muestra su valor actual. No obstante, esta acción no devuelve directamente el contenido anterior de la columna. Para comparar el valor anterior con el nuevo sería necesario consultar una versión previa del elemento almacenada en el historial de SharePoint.


Códigos de la condicición:
or(
outputs('Obtener_cambios_para_un_elemento_o_archivo_(solo_propiedades)')?['body/ColumnHasChanged/FECHA'],
outputs('Obtener_cambios_para_un_elemento_o_archivo_(solo_propiedades)')?['body/ColumnHasChanged/COMENTARIO']
)
El código de redactar:
concat(
'Se ha modificado: ',
if(
outputs('Obtener_cambios_para_un_elemento_o_archivo_(solo_propiedades)')?['body/ColumnHasChanged/FECHA'],
'FECHA',
''
),
if(
and(
outputs('Obtener_cambios_para_un_elemento_o_archivo_(solo_propiedades)')?['body/ColumnHasChanged/FECHA'],
outputs('Obtener_cambios_para_un_elemento_o_archivo_(solo_propiedades)')?['body/ColumnHasChanged/COMENTARIO']
),
' y ',
''
),
if(
outputs('Obtener_cambios_para_un_elemento_o_archivo_(solo_propiedades)')?['body/ColumnHasChanged/COMENTARIO'],
'COMENTARIO',
''
)
)
y el cuerpo del mensaje de Outlook:
<p>Se ha detectado una modificación en la lista
<strong>ALTIORA_CLIMA_COMENTARIOS</strong>.</p>
<p>
<strong>Elemento:</strong><br>
@{triggerBody()?['Title']}
</p>
<p>
<strong>@{outputs('Redactar')}</strong>
</p>
<p>
<strong>Fecha actual:</strong><br>
@{formatDateTime(triggerBody()?['FECHA'],'dd/MM/yyyy')}
</p>
<p>
<strong>Comentario actual:</strong><br>
@{triggerBody()?['COMENTARIO']}
</p>
<p>
<strong>Modificado por:</strong><br>
@{triggerBody()?['Editor']?['DisplayName']}
</p>
<p>
<strong>Fecha y hora de modificación:</strong><br>
@{convertTimeZone(triggerBody()?['Modified'],'UTC','Romance Standard Time','dd/MM/yyyy HH:mm')}
</p>
<hr>
<p>
<em>Este correo ha sido generado automáticamente por el flujo CONTROL DE CAMBIOS.</em>
</p>
Y finalmente este es el mensaje de que nos llega:

