Escribir expresiones complejas
Las expresiones complejas consisten en combinar más de una función para obtener el resultado deseado. Ya habrá podido ver algunos ejemplos de estas expresiones en las secciones Funciones matemáticas y Funciones de fecha y hora. Habrá podido ver que, para sumar tres números, debe combinar dos funciones add de esta manera:
add(add(12,13),15)
El resultado de la combinación fue 40.
Luego, ha visto el uso de la función utcNow para obtener la fecha y hora actuales, así como el uso de convertFromUtc para cambiarlas a la zona horaria de la Hora estándar del Este, como se muestra a continuación:
convertFromUtc(utcNow(), 'Eastern Standard Time', 'dd-MM-yyyy hh:mm tt' )
El resultado de estas funciones fue 09-02-2024 11:28 a. m.
En las expresiones complejas siempre hay más de una función anidada, y consisten en una expresión en la que utiliza la salida de una función como entrada de otra. No hay sintaxis, operadores ni consideraciones especiales.
Para ver el ejemplo final de una expresión compleja, imagine que hay un par de entradas como parte del desencadenador Desencadenar un flujo manualmente y, luego, esa entrada se utiliza en una fórmula para calcular una nueva hora. Puede utilizar el flujo de ejemplo que ha utilizado para probar sus expresiones o crear un nuevo flujo que se parezca a este.
Ahora seleccione Agregar una entrada en Desencadenar un flujo manualmente y agregue un número. A continuación, seleccione Agregar una entrada de nuevo y agregue una fecha. Ahora, el desencadenador debería tener un aspecto similar al siguiente:
Ahora, en el paso Redactar, cree una expresión para añadir el número de días transcurridos desde el desencadenador hasta la fecha.
addDays(triggerBody()?['date'], triggerBody()?['number'])
Esta expresión usa la función de Fecha y hora addDays y la función de Referencia triggerBody.
Nota
Si se pregunta "¿Cómo puedo saber qué corresponde al cuerpo del desencadenador?", se está planteando la pregunta correcta. El secreto es que puede combinar contenido dinámico en sus expresiones. Para hacerlo, comience su expresión escribiendo addDays() y después, con el cursor entre (), seleccione Contenido dinámico. A continuación, puede elegir sus campos. Es un método fantástico para hacer referencia a ese contenido y, al mismo tiempo, dejar que sea Power Automate el que haga el trabajo más complejo de escribir la expresión.
Si prueba su flujo e introduce la fecha 2024-02-09 y el número 2, la salida será 2024-02-11T00:00:00.0000000. Este es el formato UTC para el 11 de febrero de 2024.
Ahora puede establecer a qué día de la semana corresponde esa fecha con otra acción Redactar con la siguiente expresión:
dayOfWeek(outputs('Compose'))
El resultado de la primera acción Redactar es 2024-02-11T00:00:00.000000. El resultado de la segunda acción Redactar es 0, que representa domingo. Domingo es 0 y cada día posterior aumenta 1. Esta es una captura de pantalla del aspecto que tendría su flujo con las dos acciones de redacción y la fórmula dayOfWeek en la segunda acción de redacción.
Ahora, añada otro paso Redactar para comprobar si la fecha seleccionada es jueves. Introduzca la siguiente expresión:
if(equals(outputs('Compose_1'),4), 'You chose a Thursday', 'You didn't choose a Thursday')
Para el 9 de febrero de 2024, devolverá la cadena "No eligió un jueves".
Este ejemplo es un patrón de creación típico para una expresión compleja, en el que se crea parte por parte en pasos separados. Ahora que ya tiene todas las funciones necesarias, añada otro paso Redactar. En la nueva acción Redactar, escriba una expresión grande que lo haga todo en un solo paso. La expresión podría parecerse a esta:
if(equals(dayOfWeek(addDays(triggerBody()['date'], triggerBody()['number'])),4), 'You chose a Thursday', 'You did not choose a Thursday' )
El resultado para el 9 de febrero de 2024 será la cadena "No ha elegido un jueves". Si esto es lo que espera, puede eliminar todas las acciones de redacción preliminares del flujo para limpiarlo.
Enhorabuena. Ha escrito una expresión compleja dando pequeños pasos y juntándolo todo al final.