La Acción ‘Compose’ en Power Automate

En el desarrollo de flujos con Microsoft Power Automate, la eficiencia es lo que separa a un principiante de un experto. La acción Compose (Redactar) es la herramienta más versátil, ligera y potente del arsenal de un desarrollador. A diferencia de las variables, Compose no necesita inicialización, es de solo lectura y consume mínimos recursos del sistema. En esta guía, exploraremos cómo esta «navaja suiza» puede optimizar tus automatizaciones.

En el desarrollo de flujos con Microsoft Power Automate, la eficiencia es lo que separa a un principiante de un experto. La acción Compose (Redactar) es la herramienta más versátil, ligera y potente del arsenal de un desarrollador. A diferencia de las variables, Compose no necesita inicialización, es de solo lectura y consume mínimos recursos del sistema. En esta guía, exploraremos cómo esta «navaja suiza» puede optimizar tus automatizaciones.

🏗️ ¿Qué es exactamente la acción Compose?

La acción Compose (perteneciente al conector Data Operation) es un contenedor de datos estático. Su función principal es tomar una entrada (que puede ser texto plano, una variable, una salida de un paso anterior o una expresión compleja) y convertirla en una salida única y consistente. A diferencia de las acciones de «Variable», Compose tiene características únicas:

  • Universalidad: No tienes que definir si es un string, integer o boolean. Compose detecta automáticamente el tipo de datos.
  • Disponibilidad Inmediata: Puedes colocar un Compose en cualquier punto del flujo sin tener que declararlo al inicio.
  • Referencia Estática: Una vez generado, ese valor queda «congelado» para ese paso, facilitando la auditoría.

📊 Tabla Técnica: Compose vs. Variables

Característica Acción «Compose» Variables (Globales)
Velocidad ⚡ Instantánea 🐢 Más lenta
Ubicación En cualquier lugar Solo al inicio del flujo
Cambio de Valor No (Estática) Sí (Dinámica/Contadores)
Uso de Memoria Mínimo Moderado

📗 Caso Especial: Compose + Excel Dinámico

Cuando trabajas con Excel, los datos a veces vienen con formatos difíciles (como números de serie para las fechas). Usar un Compose antes de insertar datos en Excel te permite:

  • Limpiar caracteres: Eliminar símbolos que rompen la tabla.
  • Formateo de Filas: Construir el objeto JSON de la fila completa antes de la acción «Add a row into a table».
  • Conversión de Tipos: Asegurar que los números se traten como valores numéricos y no como texto.

❓ Preguntas Frecuentes (FAQ)

1. ¿Puedo cambiar el valor de un Compose una vez ejecutado? No. El valor de un Compose es inmutable durante esa ejecución. Si necesitas un contador que cambie (1, 2, 3…), debes usar una Variable. 2. ¿El uso excesivo de Compose ralentiza mi flujo? Al contrario. Es mucho más eficiente que inicializar y establecer múltiples variables. Compose reduce la latencia de procesamiento. 3. ¿Cómo ayuda Compose al Debugging (Depuración)? Al ser un paso intermedio, te permite ver los datos en «bruto» antes de que lleguen al destino final. Si algo falla, el Compose te mostrará exactamente qué valor causó el error. 4. ¿Puedo usar un Compose dentro de otro Compose? ¡Sí! Es una técnica excelente para desglosar expresiones lógicas muy complejas en pasos más pequeños y entendibles. 5. ¿Es mejor usar Compose o la acción «Select»? Select es superior para transformar listas completas (arrays). Compose es ideal para valores únicos, lógicas rápidas o para construir estructuras desde cero.

✅ CASOS PRÁCTICOS

Formateo de Fechas para Usuarios Finales

Hace que las fechas sean legibles en correos o informes.

formatDateTime(outputs(‘Fecha_Original’), ‘dd/MM/yyyy’)
Constructor de Payloads JSON para APIs

Crea un objeto organizado para enviar a servicios externos.

{«Usuario»: «@{outputs(‘Nombre’)}», «ID»: @{triggerOutputs()?[‘body/ID’]}}
Limpieza y Normalización de Texto

Elimina espacios accidentales y normaliza a minúsculas.

toLower(trim(outputs(‘Campo_Email’)))
Generador de Nombres de Archivo Dinámicos

Crea nombres únicos basados en fecha e ID.

concat(‘Factura_’, variables(‘ID’), ‘_’, utcNow(‘yyyyMMdd’), ‘.pdf’)
Cálculos Matemáticos Rápidos (IVA 21%)

Realiza operaciones aritméticas sin pasos adicionales.

mul(float(outputs(‘Precio_Base’)), 1.21)
Conversión de Array a Texto Separado (Join)

Une una lista de emails en una sola cadena para Outlook.

join(outputs(‘Lista_de_Correos’), ‘; ‘)
Extracción de Extensión de Archivo

Identifica si el archivo es .pdf, .jpg, etc.

last(split(outputs(‘Nombre_Archivo’), ‘.’))
Lógica Condicional Inline (Función IF)

Sustituye una caja de condición por una línea de código.

if(greater(outputs(‘Monto’), 1000), ‘Prioritario’, ‘Normal’)
Asignación de Valores por Defecto (Coalesce)

Evita fallos si un campo opcional viene vacío (null).

coalesce(outputs(‘Comentario’), ‘Sin comentarios’)
Plantillas HTML para Correos Profesionales

Diseña estructuras visuales con CSS inline.

Hola @{outputs(‘Nombre’)}

Tip final: ¡Renombra siempre tus acciones! Cambiar Compose 1 por Comp_ValidarEmail hará que tu flujo sea legible para cualquier persona.

Descubre más desde TeAyudoConM365

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo