Cómo evitar que power automate no pueda leer una columna de persona
🔍 WiseChecker

Cómo evitar que power automate no pueda leer una columna de persona

Cuando creas un flujo de Power Automate que lee una columna de persona de una lista o biblioteca de SharePoint, el flujo puede fallar con un error que indica que el valor de la columna es nulo o no se puede leer. Este problema ocurre porque Power Automate trata las columnas de persona como objetos complejos que contienen múltiples propiedades, no como valores de texto simples. El flujo no puede acceder al nombre o correo electrónico de la persona si haces referencia a la columna como una cadena simple. Este artículo explica por qué la estructura de la columna de persona rompe el flujo y muestra cómo solucionarlo usando la sintaxis y las acciones de flujo correctas.

Conclusiones clave: Leer una columna de persona en Power Automate

  • Esquema de salida de la columna de persona: Utiliza siempre la acción “Aplicar a cada” o la expresión “First” para acceder al arreglo de objetos.
  • Expresión @{item()?[‘DisplayName’]}: Extrae el nombre para mostrar de la persona del objeto de la columna de persona.
  • Acción “Inicializar variable”: Almacena el valor de la persona en una variable para evitar errores de valor nulo en pasos posteriores.

ADVERTISEMENT

Por qué Power Automate no puede leer una columna de persona directamente

Una columna de persona en SharePoint no almacena un valor de texto único. Almacena una colección de propiedades para cada persona seleccionada. Estas propiedades incluyen el nombre para mostrar, la dirección de correo electrónico, el ID de cuenta y el título del puesto. Cuando Power Automate recupera un elemento de lista, la columna de persona aparece como un arreglo de objetos. Cada objeto contiene los datos de la persona.

Si intentas usar la columna de persona directamente en una condición o en una acción de envío de correo electrónico, el motor del flujo no puede determinar qué propiedad deseas. El resultado es un valor nulo o un error en tiempo de ejecución. El mensaje de error a menudo dice “La expresión no es válida” o “No se puede evaluar la expresión”.

La solución es analizar correctamente la columna de persona. Debes iterar sobre el arreglo usando un bucle “Aplicar a cada” o usar la función “First” para obtener el primer objeto de persona. Luego accedes a la propiedad específica que necesitas, como DisplayName o Email.

Pasos para corregir el error de lectura de la columna de persona

Los siguientes pasos asumen que tienes un flujo existente que se activa en un elemento de SharePoint y falla al leer una columna de persona. Reemplazarás la referencia incorrecta de la columna con la expresión correcta.

  1. Identifica el nombre de la columna de persona y la estructura del objeto
    Abre tu flujo en modo de edición. Selecciona la acción que usa la columna de persona, como una acción “Enviar un correo electrónico” o “Condición”. Elimina cualquier referencia directa al nombre de la columna como “PersonField”. En su lugar, usa el selector de contenido dinámico para agregar la columna de persona nuevamente. Power Automate mostrará la columna como un objeto con subpropiedades. Las subpropiedades incluyen DisplayName, Email y Claims. Si no ves subpropiedades, el esquema del flujo puede estar desactualizado. Ejecuta el desencadenador manualmente una vez para actualizar el esquema.
  2. Agrega una acción “Aplicar a cada” para iterar sobre el arreglo de personas
    Inserta una nueva acción “Aplicar a cada” del conector Control. En el campo “Seleccionar una salida de pasos anteriores”, elige la columna de persona de la lista de contenido dinámico. Esta acción recorrerá cada objeto de persona en la columna. Incluso si esperas solo una persona, la columna sigue siendo un arreglo. El bucle asegura que accedas al objeto correctamente.
  3. Usa la propiedad DisplayName dentro del bucle
    Dentro de la acción “Aplicar a cada”, agrega la acción que necesita el nombre de la persona, como “Enviar un correo electrónico”. En el cuerpo o asunto del correo, usa la expresión @{items('Apply_to_each')?['DisplayName']}. Reemplaza “Apply_to_each” con el nombre real del bucle que se muestra en tu flujo. Esta expresión extrae el nombre para mostrar del objeto de persona actual.
  4. Maneja el escenario de una sola persona con la función First
    Si tu columna de persona permite solo una selección, puedes evitar el bucle. Usa la expresión @{first(outputs('Get_item')?['body/PersonField'])?['DisplayName']}. Reemplaza “Get_item” con el nombre de tu acción “Obtener elemento” y “PersonField” con el nombre interno de tu columna de persona. La función First devuelve el primer objeto del arreglo. Luego accedes a la propiedad DisplayName en ese objeto.
  5. Almacena el valor de la persona en una variable para reutilizarlo
    Agrega una acción “Inicializar variable” antes del bucle o después de la acción “Obtener elemento”. Establece el tipo en Cadena. En el campo de valor, usa la expresión del paso 3 o 4. Para una columna de una sola persona, usa @{first(outputs('Get_item')?['body/PersonField'])?['DisplayName']}. Para múltiples personas, inicializa una variable de arreglo y agrega cada nombre dentro del bucle. Luego referencia la variable en todas las acciones posteriores. Este enfoque evita errores de valor nulo si la columna está vacía.
  6. Prueba el flujo con un elemento de lista que tenga un valor de persona
    Guarda el flujo. Selecciona el desencadenador y ejecuta el flujo manualmente. Elige un elemento de lista que tenga una persona asignada a la columna de persona. Verifica que el flujo lea el nombre para mostrar correctamente y no arroje un error. Si el flujo aún falla, verifica el nombre interno de la columna. El nombre interno puede diferir del nombre para mostrar. Usa la API REST de SharePoint para encontrar el nombre interno: https://yourtenant.sharepoint.com/sites/yoursite/_api/web/lists/getbytitle('YourList')/fields.

ADVERTISEMENT

Si Power Automate aún no puede leer la columna de persona

La columna de persona devuelve nulo incluso con la expresión correcta

La columna puede estar vacía para el elemento seleccionado. En SharePoint, una columna de persona que no es obligatoria puede no tener valor. Cuando la columna está vacía, el arreglo es nulo. La función First o el bucle “Aplicar a cada” fallarán porque no hay objeto. Agrega una acción “Condición” antes de leer la columna de persona. Verifica si la columna es igual a nulo. Si es nula, omite las acciones que dependen de los datos de la persona. Usa la expresión @empty(outputs('Get_item')?['body/PersonField']) para probar si está vacía.

El flujo usa el nombre interno incorrecto de la columna

Power Automate a veces muestra el nombre para mostrar de la columna, pero el nombre interno subyacente puede contener espacios o caracteres especiales. El selector de contenido dinámico generalmente mapea correctamente, pero si escribiste la expresión manualmente, podrías usar el nombre incorrecto. Abre la salida de la acción “Obtener elemento” de un historial de ejecución. Expande el objeto del cuerpo y busca la columna de persona. Copia el nombre exacto de la propiedad y úsalo en tu expresión. El nombre interno a menudo termina con “Id” para el campo de ID de la persona. Usa la propiedad DisplayName en lugar de la propiedad Id para nombres legibles.

Múltiples personas causan acciones duplicadas

Si la columna de persona permite múltiples selecciones, el bucle “Aplicar a cada” se ejecuta una vez por persona. Esto puede enviar múltiples correos electrónicos o crear entradas duplicadas. Para enviar un solo correo con todos los nombres, recopila los nombres en una variable de cadena. Dentro del bucle, agrega cada DisplayName a la variable con un separador de punto y coma. Después de que termine el bucle, usa la variable en la acción de correo electrónico. Este método consolida todos los nombres de personas en un solo valor.

Columna de una sola persona vs columna de múltiples personas: diferencias de expresión

Elemento Columna de una sola persona Columna de múltiples personas
Estructura de la columna Arreglo con un objeto Arreglo con uno o más objetos
Acción recomendada Usar la función First para obtener el objeto Usar el bucle “Aplicar a cada” para iterar
Expresión para DisplayName @{first(outputs('Get_item')?['body/PersonField'])?['DisplayName']} @{items('Apply_to_each')?['DisplayName']} dentro del bucle
Manejo de columna vacía Verificar con @empty() antes de First Verificar con @empty() antes del bucle

Ahora puedes crear flujos de Power Automate que lean columnas de persona sin errores. Siempre trata la columna de persona como un arreglo de objetos. Usa la función First para columnas de una sola persona o un bucle “Aplicar a cada” para columnas de múltiples personas. Almacena el nombre para mostrar de la persona en una variable para simplificar la lógica de tu flujo. Si la columna está vacía, agrega una condición para omitir las acciones dependientes. Estas técnicas eliminan el error “no se puede leer una columna de persona” y hacen que tus flujos sean confiables.

ADVERTISEMENT