Dentro de Power Automate, podemos tomar las propiedades de los objetos que estamos utilizando dentro de funciones. Pero ¿Que pasa cuando esta propiedad no esta explicita?
Error al tomar valor null de la propiedad.
Estaba desarrollando un modelo con Common Data Services, para poder analizar ciertos datos de ventas.
El problema es que al llegar al paso de Compose, me encontré con este error:
Lo que sucede aquí es que estoy yendo a través de una lista de registros y, ocasionalmente, hay un campo que está vacío. En este ejemplo el error se encuentra aquí:
Esa función de subcadena espera un valor, ¿pero cómo revisaríamos si el valor se encuentra ahí? Podría añadir una condición:
Pero eso no funcionaría y nos daría este error:
También podría revisar si la propiedad está vacía:
Pero eso tampoco funcionaría:
Revisar las propiedades en el objeto.
¿Entonces cómo lo resolveríamos? La respuesta es en realidad bastante simple. Hay una diferencia entre la síntaxis que usé en las condiciones de arriba:
substring(items('Apply_to_each_2')['cr72c_descripcinprioridad'],1)
Y la síntaxis usada a continuación:
substring(items('Apply_to_each_2')?['cr72c_descripcinprioridad'],1)
Ese signo de interrogación antes de la propiedad de nombre es lo que marca una gran diferencia. Cuando usamos esa síntaxis, la expresión nos regresará un valor «null» si la propiedad no existe, mientras que cuando no usamos el signo de interrogación la expresión fallará dado que intentará acceder a esa propiedad inexistente.
Posiblemente haya otras formas de usarlo en las expresiones/condiciones, pero aquí tenemos un ejemplo:
empty(items('Apply_to_each_2')?['cr72c_descripcinprioridad'])
Y funciona bien.
Con eso, mi condición trabaja bien cuando lo probamos o en un valor vacío:
Así es como puedes resolver el problema de las propiedades de objeto en Power Automate.
Cualquier duda nos leemos abajo.