String Functions

// Combine strings
concat('Hello, ', triggerBody()?['name'])

// Extract parts
substring('PowerAutomate', 0, 5)  // Returns: Power

// Replace text
replace(variables('text'), 'old', 'new')

// Format with multiple values
formatNumber(123456.789, 'C2', 'en-US')  // $123,456.79

// Split into array
split('a,b,c', ',')

Date Functions

// Current time
utcNow()

// Format dates
formatDateTime(utcNow(), 'yyyy-MM-dd')

// Add/subtract time
addDays(utcNow(), 7)
addHours(utcNow(), -2)

// Get components
dayOfWeek(utcNow())  // 0=Sunday
dayOfMonth(utcNow())

// Parse strings to dates
parseDateTime('2024-12-27', 'yyyy-MM-dd')

Conditional Logic

// If-else
if(equals(triggerBody()?['status'], 'Approved'), 'Yes', 'No')

// Coalesce (first non-null)
coalesce(triggerBody()?['preferred'], triggerBody()?['default'], 'None')

// Null checks
if(empty(variables('myVar')), 'Empty', variables('myVar'))

Array Operations

// Get length
length(variables('myArray'))

// First/last item
first(variables('myArray'))
last(variables('myArray'))

// Check if contains
contains(variables('myArray'), 'searchValue')

// Join array to string
join(variables('myArray'), ', ')

// Filter array (use with Select action)
@{body('Filter_array')}

JSON Operations

// Parse JSON string
json(triggerBody()?['jsonString'])

// Access nested properties
triggerBody()?['customer']?['address']?['city']

// Create JSON
json(concat('{"name":"', variables('name'), '"}'))

Common Patterns

Safe Property Access

// Avoid errors on missing properties
coalesce(triggerBody()?['optionalField'], 'default value')

Trim and Clean Text

trim(replace(variables('text'), '  ', ' '))

Pro tip: Use the Compose action to test expressions before using them in complex operations.

Advertisement