Cadenas

La función concat (de concatenate) se encarga de unir dos o más cadenas de texto en una sola. Es como el «pegamento» de Power Automate. A diferencia de otros lenguajes donde se usa un signo de más (+) o un ampersand (&), aquí usamos esta función para fusionar fragmentos de texto, variables y salidas de otras acciones.

Parámetros requeridos

Esta función es muy flexible y puede recibir un número ilimitado de parámetros:

  1. text_1 (Cadena de texto): El primer fragmento.
  2. text_2 (Cadena de texto): El segundo fragmento.
  3. text_N (Opcional): Puedes seguir agregando tantos fragmentos como necesites separados por comas.

Nota técnica: Todos los valores dentro de concat deben ser tipo string. Si intentas concatenar un número directamente, es recomendable envolverlo en la función string() para evitar errores de tipo.

Ejemplos prácticos

Ejemplo 1: Unir nombre y apellido Muy común para crear saludos personalizados.

  • Expresión: concat(‘Hola, ‘, variables(‘vNombre’), ‘ ‘, variables(‘vApellido’))
  • Resultado: «Hola, Juan Pérez»

Ejemplo 2: Construcción de una URL dinámica Imagina que quieres crear un link directo a un archivo en SharePoint usando su ID.

Ejemplo 3: Generar una ruta de carpeta

  • Expresión: concat(‘Facturas/’, utcNow(‘yyyy’), ‘/’, utcNow(‘MM’))
  • Resultado: «Facturas/2026/04»

La función substring extrae una porción específica de una cadena de texto, comenzando en una posición determinada y tomando el número de caracteres que tú le indiques. Es vital para separar códigos, extraer prefijos o recortar textos largos que no caben en una columna de Excel o una notificación de Teams.

Parámetros requeridos

Requiere exactamente tres parámetros:

  1. text (Cadena de texto): El texto original del que quieres extraer una parte.
  2. startIndex (Número entero): La posición donde empieza el recorte. ¡Cuidado! Power Automate empieza a contar desde 0. El primer carácter es el 0, el segundo es el 1, y así sucesivamente.
  3. length (Número entero): La cantidad de caracteres que quieres tomar a partir de la posición inicial.

⚠️ Alerta de error: Si el startIndex más el length superan el tamaño total del texto original, el flujo fallará. Siempre asegúrate de que el texto sea lo suficientemente largo.

Ejemplos prácticos

Ejemplo 1: Extraer el prefijo de un código Imagina que tienes un código de empleado «EMP-9928» y solo quieres la parte «EMP».

  • Expresión: substring(‘EMP-9928’, 0, 3)
  • Resultado: «EMP»

Ejemplo 2: Obtener los primeros 5 caracteres de un ID Útil para crear versiones cortas de IDs largos (como un GUID).

  • Expresión: substring(variables(‘vGUID’), 0, 5)
  • Escenario: Si el ID es a1b2c3d4-e5f6…, el resultado será a1b2c.

Ejemplo 3: Recortar una descripción para una vista previa Si tienes un comentario largo y solo quieres mostrar los primeros 20 caracteres seguidos de «…».

  • Expresión: concat(substring(outputs(‘Comentario’), 0, 20), ‘…’)
  • Resultado: «Este es un comentari…»

La función replace busca todas las coincidencias de una palabra o fragmento de texto dentro de una cadena y las sustituye por otro texto que tú definas. Es fundamental para limpiar nombres de archivos, corregir rutas de carpetas o formatear datos que vienen de sistemas externos con caracteres no deseados.

Parámetros requeridos

Requiere exactamente tres parámetros:

  1. text (Cadena de texto): El texto original donde quieres hacer el cambio.
  2. oldText (Cadena de texto): Lo que quieres buscar.
  3. newText (Cadena de texto): El texto que pondrás en su lugar.

Ejemplos prácticos

Ejemplo 1: Limpiar nombres de archivos Imagina que quieres quitar los espacios de un nombre de archivo para evitar errores en servidores.

  • Expresión: replace(‘Reporte de Ventas 2026.pdf’, ‘ ‘, ‘_’)
  • Resultado: «Reporte_de_Ventas_2026.pdf»

Ejemplo 2: Corregir formatos de moneda o números Si recibes un precio con coma pero tu base de datos necesita punto decimal.

  • Expresión: replace(‘1.550,50’, ‘,’, ‘.’)
  • Resultado: «1.550.50» (Ojo: para limpieza total podrías anidarlos).

Ejemplo 3: Personalizar plantillas rápidas Si tienes un texto genérico y quieres insertar un valor dinámico sin usar concat.

  • Expresión: replace(‘Estimado {usuario}:’, ‘{usuario}’, variables(‘vNombre’))
  • Resultado: «Estimado Juan:»

La función toLower toma una cadena de texto y convierte todos los caracteres en mayúsculas a minúsculas. Los números, espacios y caracteres especiales (como puntos o guiones) permanecen intactos. Es la función estándar para normalizar datos antes de guardarlos en una base de datos o compararlos en una condición.

Parámetros requeridos

Requiere exactamente un parámetro:

  1. text (Cadena de texto): El texto que deseas convertir.

Ejemplos prácticos

Ejemplo 1: Estandarizar correos electrónicos Muchos sistemas fallan si el correo tiene una mayúscula accidental. Con esto aseguras la consistencia.

  • Expresión: toLower(‘Contacto@Empresa.com’)
  • Resultado: «contacto@empresa.com»

Ejemplo 2: Comparación infalible (Case-insensitive) Si quieres validar si un usuario escribió «Acepto» sin importar si usó mayúsculas o minúsculas.

  • Expresión: equals(toLower(outputs(‘Respuesta’)), ‘acepto’)
  • Resultado: True (Incluso si el usuario escribió «ACEPTO» o «aCePto»).

Ejemplo 3: Limpieza de etiquetas

  • Expresión: toLower(‘PRODUCTO_PREMIUM’)
  • Resultado: «producto_premium»

La función toUpper toma una cadena de texto y convierte todas las letras minúsculas en mayúsculas. Al igual que su gemela, no afecta a los números, símbolos ni espacios. Es la herramienta estándar para formatear códigos de producto (SKU), códigos de aeropuerto, IDs de transacciones o encabezados en documentos generados automáticamente.

Parámetros requeridos

Requiere exactamente un parámetro:

  1. text (Cadena de texto): El texto que deseas convertir a mayúsculas.

Ejemplos prácticos

Ejemplo 1: Estandarizar códigos de inventario (SKU) A veces los usuarios escriben los códigos en minúsculas por error, lo que puede causar problemas en bases de datos Legacy.

  • Expresión: toUpper(‘iphone-15-pro’)
  • Resultado: «IPHONE-15-PRO»

Ejemplo 2: Preparar datos para un sistema ERP Muchos sistemas contables exigen que los identificadores de cliente o proveedor estén en mayúsculas.

  • Expresión: toUpper(variables(‘vNombreProveedor’))
  • Escenario: Si el nombre es «microsoft corp», el resultado será «MICROSOFT CORP».

Ejemplo 3: Crear un encabezado visual en un correo

  • Expresión: concat(‘AVISO IMPORTANTE: ‘, toUpper(triggerBody()?[‘Asunto’]))
  • Resultado: «AVISO IMPORTANTE: FALLO EN EL SERVIDOR» (Si el asunto original era «Fallo en el servidor»).

La función trim toma una cadena de texto y elimina todos los espacios en blanco que se encuentren al inicio y al final de la misma. No toca los espacios que hay entre las palabras. Es vital para limpiar datos que vienen de formularios, correos electrónicos o copias de archivos donde un espacio extra puede hacer que una búsqueda o comparación falle.

Parámetros requeridos

Requiere exactamente un parámetro:

  1. text (Cadena de texto): El texto que quieres limpiar.

Ejemplos prácticos

Ejemplo 1: Limpiar un nombre con espacios accidentales Imagina que un usuario escribió su nombre en un formulario como " Juan Pérez ".

  • Expresión: trim(‘ Juan Pérez ‘)
  • Resultado: «Juan Pérez»

Ejemplo 2: Sanitizar una entrada para comparación Si comparas «Aprobado» con «Aprobado » (con un espacio al final), Power Automate dirá que son diferentes. trim resuelve esto.

  • Expresión: equals(trim(variables(‘vRespuesta’)), ‘Aprobado’)
  • Resultado: True (Incluso si la variable traía espacios invisibles).

Ejemplo 3: Preparar una búsqueda en base de datos

  • Expresión: trim(outputs(‘Obtener_comentario’))
  • Escenario: Asegura que el texto que envías a SQL o Dataverse no tenga «basura» de espacios que complique las consultas.

La función length cuenta y devuelve el número total de elementos dentro de un objeto.

  • Si le pasas un texto (string), te dirá cuántos caracteres tiene (incluyendo espacios, puntos y símbolos).
  • Si le pasas una lista (array), te dirá cuántos elementos o filas contiene.

Es la herramienta perfecta para condiciones del tipo «si el texto es muy corto» o «si la lista de archivos está vacía».

Parámetros requeridos

Requiere exactamente un parámetro:

  1. collection (Cadena o Matriz): El texto o la lista que quieres medir.

Ejemplos prácticos

Ejemplo 1: Validar la longitud de un teléfono Imagina que necesitas que un número de teléfono tenga exactamente 10 dígitos.

  • Expresión: length(variables(‘vTelefono’))
  • Resultado: 10 (Si el valor es «5512345678»).

Ejemplo 2: Verificar si una lista tiene datos Antes de enviar un correo con una tabla, quieres saber si hay filas para mostrar.

  • Expresión: length(outputs(‘Obtener_filas’)?[‘body/value’])
  • Escenario: Si la consulta a Excel o SQL no trajo nada, el resultado será 0.

Ejemplo 3: Evitar errores de substring Como vimos antes, substring falla si pides más caracteres de los que existen. Puedes usar length para prevenirlo.

  • Expresión: if(greater(length(variables(‘vTexto’)), 10), substring(variables(‘vTexto’), 0, 10), variables(‘vTexto’))
  • Lógica: «Si el texto mide más de 10, recórtalo; si no, déjalo igual».

💡 Tip

¡Cuidado con los nulos! Si intentas aplicar length() a una variable que está vacía (null), el flujo fallará con un error.

La función split toma una cadena de texto y la divide en múltiples fragmentos basándose en un delimitador (un carácter o texto que sirve como separador). El resultado no es otro texto, sino una matriz (array) de elementos. Es la herramienta opuesta a concat.

Parámetros requeridos

Requiere exactamente dos parámetros:

  1. text (Cadena de texto): El texto completo que quieres romper.
  2. delimiter (Cadena de texto): El carácter o palabra que marca dónde se debe cortar (ej: una coma ,, un punto ., un espacio o un guion -).

Ejemplos prácticos

Ejemplo 1: Extraer el dominio de un correo Quieres saber de qué empresa es un contacto.

  • Expresión: split(‘usuario@dominio.com’, ‘@’)
  • Resultado: [«usuario», «dominio.com»]
  • Bonus: Si quieres solo el dominio, usarías last(split(…)).

Ejemplo 2: Procesar una lista simple (CSV) Imagina que recibes una lista de colores en un solo campo: «Rojo;Azul;Verde».

  • Expresión: split(‘Rojo;Azul;Verde’, ‘;’)
  • Resultado: [«Rojo», «Azul», «Verde»] (Ahora puedes usar estos datos en un «Apply to each»).

Ejemplo 3: Obtener el nombre de un archivo de una ruta completa

  • Expresión: split(‘C:/Documentos/Facturas/Factura_001.pdf’, ‘/’)
  • Resultado: [«C:», «Documentos», «Facturas», «Factura_001.pdf»]

La función startsWith comprueba si una cadena de texto comienza con un fragmento específico que tú definas. A diferencia de las funciones anteriores que devolvían texto o números, esta es una función lógica: su resultado siempre será true (verdadero) o false (falso).

Es perfecta para usar dentro de bloques de «Condición» o funciones if().

Parámetros requeridos

Requiere exactamente dos parámetros:

  1. text (Cadena de texto): El texto completo que quieres analizar.
  2. searchText (Cadena de texto): El fragmento que buscas al inicio.

Ejemplos prácticos

Ejemplo 1: Validar si un enlace es seguro (HTTPS)

Ejemplo 2: Identificar facturas de un departamento específico Imagina que las facturas de ventas siempre empiezan con «VEN-«.

  • Expresión: startsWith(variables(‘vCodigoFactura’), ‘VEN-‘)
  • Escenario: Si el código es «VEN-998», el resultado será true. Si es «COM-123», será false.

Ejemplo 3: Filtrar archivos por prefijo

  • Expresión: startsWith(triggerBody()?[‘{FilenameWithExtension}’], ‘Draft_’)
  • Resultado: true si el archivo es un borrador.

La función endsWith comprueba si una cadena de texto termina con un fragmento específico. Al igual que su pareja, es una función lógica, por lo que solo devuelve true o false. Es el estándar de oro en Power Automate para decidir qué hacer con un archivo basándose en si es un .pdf, .xlsx o .zip.

Parámetros requeridos

Requiere exactamente dos parámetros:

  1. text (Cadena de texto): El texto completo que quieres analizar.
  2. searchText (Cadena de texto): El fragmento que buscas al final.

Ejemplos prácticos

Ejemplo 1: Filtrar archivos por extensión Imagina que tu flujo solo debe procesar facturas en PDF.

  • Expresión: endsWith(triggerBody()?[‘{FilenameWithExtension}’], ‘.pdf’)
  • Resultado: true si el archivo termina en .pdf.

Ejemplo 2: Validar dominios gubernamentales o educativos

  • Expresión: endsWith(variables(‘vEmail’), ‘.edu’)
  • Escenario: Si el correo es «estudiante@universidad.edu», el resultado será true.

Ejemplo 3: Identificar versiones finales de documentos

  • Expresión: endsWith(outputs(‘Nombre_Archivo’), ‘_FINAL’)
  • Resultado: true si el archivo fue etiquetado como la versión definitiva.

La función indexOf busca un fragmento de texto dentro de otro y devuelve un número que representa su posición inicial.

  • Al igual que en casi todo el motor de expresiones, se empieza a contar desde 0.
  • Si la función encuentra el texto, devuelve el índice de la primera coincidencia.
  • Si no lo encuentra, devuelve -1. Este detalle es vital para evitar errores en tus condiciones.

Parámetros requeridos

Requiere exactamente dos parámetros:

  1. text (Cadena de texto): El texto completo donde quieres buscar.
  2. searchText (Cadena de texto): El fragmento que quieres localizar.

Ejemplos prácticos

Ejemplo 1: Localizar el separador en un correo Quieres saber en qué posición está el «@» para luego extraer el nombre de usuario.

  • Expresión: indexOf(‘soporte@empresa.com’, ‘@’)
  • Resultado: 7 (porque ‘s’ es 0, ‘o’ es 1… y ‘@’ es el octavo carácter).

Ejemplo 2: Validar la existencia de una palabra clave A diferencia de contains, esto te sirve para lógicas numéricas.

  • Expresión: indexOf(‘Error crítico en el servidor’, ‘crítico’)
  • Resultado: 6

Ejemplo 3: Buscar algo que NO existe

  • Expresión: indexOf(‘Hola Mundo’, ‘Adiós’)
  • Resultado: -1 (Úsalo en una condición: «Si el resultado es igual a -1, la palabra no está»).

La función lastIndexOf busca un fragmento de texto dentro de otro, pero a diferencia de su hermano, devuelve la posición de la última coincidencia.

  • Al igual que todas las funciones de posición, empieza a contar desde 0.
  • Si el texto aparece varias veces, te dará el índice de la que esté más a la derecha.
  • Si no lo encuentra, devuelve -1.

Parámetros requeridos

Requiere exactamente dos parámetros:

  1. text (Cadena de texto): El texto completo donde quieres buscar.
  2. searchText (Cadena de texto): El fragmento que quieres localizar por última vez.

Ejemplos prácticos

Ejemplo 1: Extraer el nombre de un archivo de una ruta larga Imagina que tienes: C:/Usuarios/Documentos/Reporte_Final_V2.pdf. Para obtener solo el nombre, necesitas saber dónde está la última barra /.

  • Expresión: lastIndexOf(‘C:/Usuarios/Documentos/Reporte_Final_V2.pdf’, ‘/’)
  • Resultado: 22 (la posición de la barra justo antes de «Reporte»).

Ejemplo 2: Encontrar el último espacio en un nombre completo Útil si quieres separar el último apellido de una persona.

  • Expresión: lastIndexOf(‘Juan Pérez García’, ‘ ‘)
  • Resultado: 10 (el espacio antes de «García»).

Ejemplo 3: Validar extensiones en nombres con puntos intermedios Si un archivo se llama proyecto.v1.backup.zip, el punto que te importa es el último.

  • Expresión: lastIndexOf(‘proyecto.v1.backup.zip’, ‘.’)
  • Resultado: 18.

La función guid genera un Identificador Único Global (GUID o UUID). Es una cadena de 32 caracteres hexadecimales organizados en cinco grupos (8-4-4-4-12). La probabilidad de generar dos iguales es prácticamente cero, lo que la hace perfecta para crear nombres de archivos temporales, claves primarias en bases de datos o identificadores de transacciones únicos.

Parámetros requeridos

Esta función es flexible y puede usarse de dos formas:

  1. Sin parámetros: guid() -> Genera un identificador con el formato estándar (con guiones).
  2. Con formato (opcional): guid(‘format’) -> Permite especificar cómo quieres que se vea el resultado.
    • 'D': Formato por defecto (32 dígitos separados por guiones).
    • 'N': Solo los 32 dígitos (sin guiones).
    • 'B': Envuelto en llaves {xxxxxxxx-xxxx...}.
    • 'P': Envuelto en paréntesis (xxxxxxxx-xxxx...).

Ejemplos prácticos

Ejemplo 1: Generar un ID único para un proceso Ideal para rastrear un flujo de inicio a fin en los logs.

  • Expresión: guid()
  • Resultado: «e2b1f4a5-1c23-4b56-8d7e-9f0a1b2c3d4e»

Ejemplo 2: Nombre de archivo que nunca se repite Si guardas archivos en SharePoint y quieres evitar el error de «ya existe un archivo con ese nombre».

  • Expresión: concat(‘Factura_’, guid(‘N’), ‘.pdf’)
  • Resultado: «Factura_e2b1f4a51c234b568d7e9f0a1b2c3d4e.pdf»

Ejemplo 3: Formato para bases de datos específicas

  • Expresión: guid(‘B’)
  • Resultado: «{e2b1f4a5-1c23-4b56-8d7e-9f0a1b2c3d4e}»

Deja un comentario

¡Gracias por tu mensaje!

Me pondré en contacto tan rápido como pueda.

Descubre más desde Power Platform En Español

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

Seguir leyendo