Creas o actualizas un solo elemento en una lista o biblioteca de SharePoint y tu flujo de Power Automate se desencadena dos veces. Este doble disparo causa correos electrónicos duplicados, actualizaciones de archivos repetidas o notificaciones dobles. La causa raíz suele ser una combinación de la configuración del desencadenador del flujo y el comportamiento interno de actualización de SharePoint. Este artículo explica por qué un flujo se ejecuta dos veces para un elemento de SharePoint y proporciona una solución clara para detener las ejecuciones duplicadas.
Conclusiones clave: Detener ejecuciones de flujo duplicadas para elementos de SharePoint
- Condición de desencadenador para SharePoint: Agregar una condición de desencadenador que verifique
@equals(triggerOutputs()?['headers/x-ms-file-id'], '')evita la segunda ejecución. - Cambio del tipo de desencadenador a Cuando se crea o modifica un archivo (solo propiedades): Reduce los desencadenadores duplicados causados por actualizaciones de metadatos de SharePoint.
- Deshabilitar el desencadenador en eliminación de archivos o carpetas: Evita que el flujo se ejecute cuando SharePoint envía un evento de eliminación.
Por qué un flujo se desencadena dos veces para un solo elemento de SharePoint
Cuando creas o modificas un elemento en SharePoint, la plataforma a menudo envía más de un evento a Power Automate. El primer evento es la creación o actualización inicial. El segundo evento puede provenir de SharePoint actualizando metadatos internos, como la fecha de modificación, el número de versión o el ID de tipo de contenido. Si tu flujo usa el desencadenador “Cuando se crea o modifica un elemento”, responde a cada evento, incluidas estas actualizaciones internas. Además, si tienes múltiples desencadenadores en la misma lista o biblioteca, cada uno puede activarse de forma independiente.
Otra causa común es la condición del desencadenador del flujo. Por defecto, Power Automate no distingue entre una acción de usuario y una acción del sistema. Las actualizaciones de SharePoint como el control de versiones, las políticas de retención o los cambios de estado del flujo de trabajo cuentan como modificaciones. El flujo ve cada cambio como un nuevo evento de desencadenador.
El papel de las actualizaciones internas de SharePoint
SharePoint actualiza automáticamente ciertos campos cuando se guarda un elemento. Por ejemplo, el campo Modified cambia y el número de versión se incrementa. Si el control de versiones está habilitado, cada guardado crea una nueva versión, lo que desencadena otro evento. Esto significa que una sola acción de usuario puede producir dos o más eventos en rápida sucesión.
Tipo de desencadenador y configuración
Power Automate ofrece dos desencadenadores principales de SharePoint: “Cuando se crea o modifica un elemento” y “Cuando se crea o modifica un archivo (solo propiedades)”. El primer desencadenador se activa para todos los cambios, incluidas las actualizaciones de metadatos. El segundo desencadenador se activa solo cuando cambian propiedades como el título o la descripción, ignorando las actualizaciones internas del sistema. Usar el tipo de desencadenador incorrecto puede causar ejecuciones dobles.
Pasos para corregir un flujo que se ejecuta dos veces para un elemento de SharePoint
Aplica estas correcciones en orden. Prueba el flujo después de cada paso para confirmar que el problema se resuelve.
Paso 1: Agregar una condición de desencadenador para filtrar eventos duplicados
- Abre tu flujo en Power Automate
Ve a Power Automate y selecciona Mis flujos. Haz clic en el nombre del flujo para editarlo. - Selecciona el paso del desencadenador de SharePoint
Haz clic en la tarjeta del desencadenador etiquetada Cuando se crea o modifica un elemento o Cuando se crea o modifica un archivo. - Agrega una condición de desencadenador
En el panel de configuración del desencadenador, expande Agregar condición de desencadenador. Ingresa esta expresión:@equals(triggerOutputs()?['headers/x-ms-file-id'], '')
Esta condición permite que el flujo se ejecute solo cuando el encabezadox-ms-file-idesté vacío, lo que ocurre en el primer evento. El segundo evento de las actualizaciones internas tendrá un valor y será ignorado. - Guarda el flujo
Haz clic en Guardar en la parte superior del editor. Prueba creando o actualizando un elemento de SharePoint. El flujo debería ejecutarse solo una vez.
Paso 2: Cambiar el desencadenador a Solo propiedades
- Elimina el paso del desencadenador existente
En el editor de flujo, haz clic derecho en la tarjeta del desencadenador y selecciona Eliminar. - Agrega un nuevo desencadenador
Haz clic en el botón + y busca SharePoint. Selecciona Cuando se crea o modifica un archivo (solo propiedades). - Configura el desencadenador
Selecciona la misma dirección del sitio y el nombre de la lista o biblioteca. Este desencadenador ignora los cambios de metadatos internos y se activa solo cuando cambian las propiedades editables por el usuario. - Guardar y probar
Haz clic en Guardar. Crea un nuevo elemento en SharePoint. El flujo debería desencadenarse una vez.
Paso 3: Deshabilitar el desencadenador en eliminación de archivos o carpetas
- Abrir la configuración del desencadenador
Haz clic en la tarjeta del desencadenador en tu flujo. En el panel de configuración, encuentra Desencadenar en eliminación de archivos o carpetas. - Establecer en No
Cambia el menú desplegable a No. Esto evita que el flujo se ejecute cuando SharePoint envía un evento de eliminación, lo que a veces puede causar un doble disparo durante las actualizaciones. - Guardar el flujo
Haz clic en Guardar.
Si el flujo aún se ejecuta dos veces después de la corrección principal
El flujo se ejecuta dos veces cuando se usan múltiples desencadenadores en la misma lista
Si tienes dos o más flujos desencadenados por la misma lista o biblioteca de SharePoint, cada flujo se ejecuta de forma independiente. Para confirmarlo, revisa el historial de ejecuciones de cada flujo. La solución es consolidar la lógica en un solo flujo o usar una condición para ejecutar solo un flujo según las propiedades del elemento.
El flujo se ejecuta dos veces debido a un flujo de trabajo de SharePoint o una política de retención
Los flujos de trabajo de SharePoint, las políticas de retención o las políticas de gestión de información pueden actualizar elementos después del guardado inicial. Estas actualizaciones desencadenan el flujo nuevamente. Para detener esto, revisa las políticas aplicadas a la lista o biblioteca. Elimina cualquier política de actualización automática que no sea necesaria. Alternativamente, agrega una condición de desencadenador que verifique el campo Modified para ver si el cambio fue realizado por una cuenta del sistema.
El flujo se ejecuta dos veces cuando se usa un desencadenador de periodicidad con una acción de SharePoint
Si tu flujo usa un desencadenador de Periodicidad y luego una acción de SharePoint como Obtener elementos, el flujo se ejecuta según un horario, no en cambios de elementos. Sin embargo, si también tienes un desencadenador de SharePoint en el mismo flujo, la periodicidad y el desencadenador pueden iniciar el flujo. Elimina el desencadenador adicional o usa solo un desencadenador por flujo.
Desencadenadores de SharePoint para Power Automate: Comparación
| Elemento | Cuando se crea o modifica un elemento | Cuando se crea o modifica un archivo (solo propiedades) |
|---|---|---|
| Descripción | Se activa para todos los cambios, incluidas las actualizaciones de metadatos internos | Se activa solo cuando cambian las propiedades editables por el usuario |
| Desencadenar en actualizaciones del sistema | Sí | No |
| Mejor para | Listas simples donde las ejecuciones dobles son aceptables | Listas o bibliotecas con control de versiones o políticas de retención |
| Riesgo de ejecuciones duplicadas | Alto | Bajo |
Después de aplicar la condición de desencadenador o cambiar al desencadenador de solo propiedades, tu flujo debería ejecutarse exactamente una vez por acción del usuario. Para reducir aún más las ejecuciones duplicadas, revisa cualquier flujo de trabajo de SharePoint o política de retención que actualice elementos automáticamente. Usa el historial de ejecuciones en Power Automate para confirmar que solo aparece una ejecución por cada cambio de elemento.