Cómo corregir los desencadenadores de lista que omiten elementos importados en masa
🔍 WiseChecker

Cómo corregir los desencadenadores de lista que omiten elementos importados en masa

Cuando importa elementos en masa en una lista de SharePoint, los desencadenadores automáticos, como los flujos de Power Automate o los receptores de eventos personalizados, pueden no ejecutarse. Esto ocurre porque las operaciones masivas omiten los eventos estándar de creación de elementos de los que dependen los desencadenadores. Este artículo explica por qué los desencadenadores omiten los elementos importados en masa y proporciona métodos paso a paso para garantizar que sus desencadenadores se ejecuten correctamente.

Puntos clave: Corrección de fallos de desencadenadores en importaciones masivas

  • Condición de desencadenador de Power Automate: Agregue una condición para verificar el cambio del campo ‘Modificado’ y capturar las actualizaciones masivas.
  • Operaciones por lotes de CSOM o API REST: Use la creación de elementos individuales en lugar de puntos finales por lotes para activar los desencadenadores por elemento.
  • Flujo de trabajo de SharePoint Designer: Reemplace los receptores de eventos con flujos de trabajo a nivel de sitio que se ejecuten en los cambios de elementos de lista.

ADVERTISEMENT

Por qué las importaciones masivas omiten los desencadenadores de lista

Los desencadenadores de lista de SharePoint, incluidos los flujos de Power Automate y los receptores de eventos, dependen de eventos específicos como ItemAdded o ItemUpdated. Cuando importa elementos en masa utilizando métodos como la edición rápida de la interfaz de SharePoint, la exportación de lista de Microsoft Excel o las operaciones por lotes de CSOM, SharePoint procesa estos elementos en una sola transacción. Este procesamiento por lotes no genera eventos individuales de elementos, por lo que los desencadenadores que escuchan cada creación o actualización de elemento nunca se ejecutan.

La causa raíz es la diferencia entre las operaciones de un solo elemento y las operaciones masivas. La creación de un solo elemento activa el evento ItemAdded. La importación masiva utiliza una sola solicitud web que agrega muchas filas a la vez, y SharePoint lo trata como una sola operación. El receptor de eventos o el desencadenador de flujo ve solo un evento para todo el lote, no uno por elemento. Este comportamiento es intencional para mejorar el rendimiento de la importación, pero rompe los flujos de trabajo que dependen de desencadenadores por elemento.

Otra causa es el uso del punto final por lotes de la API REST de SharePoint. Cuando envía una solicitud por lotes que contiene varios elementos, el servidor los procesa juntos y genera un solo evento. El desencadenador ‘Cuando se crea un elemento’ de Power Automate busca eventos de creación individuales, por lo que omite los elementos agregados en un lote.

Pasos para garantizar que los desencadenadores se ejecuten en importaciones masivas

  1. Cambie a métodos de importación de un solo elemento
    Use el formulario de lista estándar de SharePoint para agregar elementos uno a la vez. Este método activa ItemAdded para cada elemento. Aunque es más lento para importaciones grandes, garantiza que todos los flujos y receptores de eventos se ejecuten. Para importaciones desde Excel, use la aplicación ‘Importar hoja de cálculo’ en lugar de la edición rápida, ya que crea elementos individualmente.
  2. Modifique la condición del desencadenador de Power Automate
    Si debe usar la importación masiva, cambie su flujo para que se active en el cambio del campo ‘Modificado’ en lugar de ‘Creado’. Agregue una condición de desencadenador que verifique si el campo ‘Modificado’ no está en blanco. Esto captura los elementos que se importaron en masa porque el campo ‘Modificado’ se actualiza incluso durante las operaciones por lotes. En Power Automate, edite el desencadenador y agregue una condición: @equals(triggerOutputs()?['body/Modified'], triggerOutputs()?['body/Created']) — esto asegura que el flujo se ejecute solo cuando el elemento se modificó realmente después de la creación.
  3. Use un flujo de recurrencia para sondear nuevos elementos
    Cree un flujo programado que se ejecute cada 5 a 15 minutos. Use la acción ‘Obtener elementos’ para recuperar todos los elementos de la lista donde la fecha ‘Creado’ sea mayor que la última hora de ejecución. Luego, recorra cada elemento y realice la acción deseada. Este método funciona independientemente de cómo se importaron los elementos y no depende de desencadenadores de eventos.
  4. Implemente un receptor de eventos personalizado con procesamiento diferido
    Si tiene experiencia con SharePoint Server o SharePoint Framework, cree un receptor de eventos remoto que escuche el evento ItemAdded. Use un trabajo de temporizador para procesar los elementos que se importaron en masa. El trabajo de temporizador se ejecuta periódicamente y verifica los elementos que aún no se han procesado, asegurando que no se omita ningún elemento.
  5. Use flujos de trabajo de SharePoint Designer en lugar de receptores de eventos
    Los flujos de trabajo de SharePoint Designer se ejecutan según un horario y pueden verificar elementos nuevos o modificados. Cree un flujo de trabajo a nivel de sitio que se ejecute cada hora. Use la acción ‘Esperar evento’ para pausar hasta que se agregue o cambie un elemento. Este enfoque es más confiable para importaciones masivas porque no depende de eventos en tiempo real.

ADVERTISEMENT

Problemas comunes y soluciones para desencadenadores de importación masiva

El flujo de Power Automate no se ejecuta después de la importación masiva

Si su flujo está configurado para activarse ‘Cuando se crea un elemento’, no se ejecutará para elementos agregados mediante edición rápida o lote de CSOM. Para solucionarlo, cambie el desencadenador a ‘Cuando se crea o modifica un elemento’ y agregue una condición que verifique si las marcas de tiempo ‘Creado’ y ‘Modificado’ son iguales. Esto asegura que el flujo se ejecute para elementos recién creados incluso si se importaron en masa.

El receptor de eventos se ejecuta una vez para todo el lote

Al usar un receptor de eventos personalizado, puede ver solo un evento para toda la importación masiva. Para manejar esto, anule el método ItemAdded y verifique el recuento de elementos en la lista. Si el recuento es mayor de lo esperado, procese los nuevos elementos individualmente. Alternativamente, use el evento ItemUpdated con una columna de marca que marque los elementos como procesados.

La importación masiva desde Excel causa datos faltantes en los flujos de trabajo

Cuando importa desde Excel usando la aplicación ‘Importar hoja de cálculo’, los datos se agregan a través del servicio web de lista, que activa eventos individuales. Sin embargo, si usa ‘Exportar a Excel’ y luego reimporta usando edición rápida, los eventos se omiten. Siempre use la aplicación ‘Importar hoja de cálculo’ para importaciones de Excel para asegurar que los desencadenadores por elemento se ejecuten.

Comparación de comportamiento de desencadenadores: importación de un solo elemento vs. importación masiva

Elemento Importación de un solo elemento Importación masiva
El receptor de eventos se ejecuta Por elemento Una vez por lote
Desencadenador de Power Automate Se ejecuta inmediatamente Puede no ejecutarse
Flujo de trabajo de SharePoint Designer Funciona como se espera Puede requerir programación
Método de creación de elementos Formulario de lista, API REST de un solo elemento Edición rápida, lote de CSOM, exportación de Excel
Rendimiento Más lento para importaciones grandes Más rápido pero rompe los desencadenadores

Ahora puede asegurarse de que los desencadenadores de su lista se ejecuten correctamente incluso al importar elementos en masa. Comience cambiando a métodos de importación de un solo elemento para flujos de trabajo críticos. Si la importación masiva es inevitable, use un flujo de Power Automate basado en recurrencia que sondee nuevos elementos cada pocos minutos. Para escenarios avanzados, implemente un trabajo de temporizador personalizado que procese los elementos no manejados después de una importación masiva.

ADVERTISEMENT