Reference guide to workflow expression functions in Power Automate and Azure Logic Apps
For workflow definitions in Azure Logic Apps and Power Automate, some expressions get their values from runtime actions that might not yet exist when your workflow starts running. To reference or process the values in these expressions, you can use expression functions provided by the Workflow Definition Language.
Note:
This reference page applies to both Azure Logic Apps and
Power Automate, but appears in the Azure Logic Apps documentation. Although
this page refers specifically to logic app workflows, these functions work for
both flows and logic app workflows.
The following sections organize functions based on their general purpose, or you can check these functions in alphabetical order.
All functions based on their general purpose:
- String functions
To work with strings, you can use these string functions and also some collection functions. String functions work only on strings.
String function |
Task |
chunk |
Split a string or collection into chunks of equal length. |
concat |
Combine two or more strings, and return the combined
string. |
endsWith |
Check whether a string ends with the specified substring. |
formatNumber |
Return a number as a string based on the specified format |
guid |
Generate a globally unique identifier (GUID) as a string. |
indexOf |
Return the starting position for a substring. |
isFloat |
Return a boolean that indicates whether a string is a
floating-point number. |
isInt |
Return a boolean that indicates whether a string is an
integer. |
lastIndexOf |
Return the starting position for the last occurrence of a
substring. |
length |
Return the number of items in a string or array. |
nthIndexOf |
Return the starting position or index value where
the nth occurrence of a substring appears in a string. |
replace |
Replace a substring with the specified string, and return
the updated string. |
slice |
Return a substring by specifying the starting and ending
position or value. |
split |
Return an array that contains substrings, separated by
commas, from a larger string based on a specified delimiter character in the
original string. |
startsWith |
Check whether a string starts with a specific substring. |
substring |
Return characters from a string, starting from the
specified position. |
toLower |
Return a string in lowercase format. |
toUpper |
Return a string in uppercase format. |
trim |
Remove leading and trailing whitespace from a string, and
return the updated string. |
- Collection functions
To work with collections, generally arrays, strings, and sometimes, dictionaries, you can use these collection functions.
Collection function |
Task |
chunk |
Split a string or collection into chunks of equal length. |
contains |
Check whether a collection has a specific item. |
empty |
Check whether a collection is empty. |
first |
Return the first item from a collection. |
intersection |
Return a collection that has only the
common items across the specified collections. |
item |
If this function appears inside a repeating action over an
array, return the current item in the array during the action's current
iteration. |
join |
Return a string that has all the items
from an array, separated by the specified character. |
last |
Return the last item from a collection. |
length |
Return the number of items in a string or array. |
reverse |
Reverse the order of items in an array. |
skip |
Remove items from the front of a collection, and
return all the other items. |
sort |
Sort items in a collection. |
take |
Return items from the front of a collection. |
union |
Return a collection that has all the
items from the specified collections. |
- Logical comparison functions
To work with conditions, compare values and expression
results, or evaluate various kinds of logic, you can use these logical
comparison functions. For the full reference about each function.
Note
If you use logical functions or conditions to compare
values, null values are converted to empty string ("") values. The
behavior of conditions differs when you compare with an empty string instead of
a null value.
Logical comparison function |
Task |
and |
Check whether all expressions are true. |
equals |
Check whether both values are equivalent. |
greater |
Check whether the first value is greater than the second
value. |
greaterOrEquals |
Check whether the first value is greater than or equal to
the second value. |
if |
Check whether an expression is true or false. Based on the
result, return a specified value. |
isFloat |
Return a boolean that indicates whether a string is a
floating-point number. |
isInt |
Return a boolean that indicates whether a string is an
integer. |
less |
Check whether the first value is less than the second
value. |
lessOrEquals |
Check whether the first value is less than or equal to the
second value. |
not |
Check whether an expression is false. |
or |
Check whether at least one expression is true. |
- Conversion functions
To change a value's type or format, you can use these
conversion functions. For example, you can change a value from a Boolean to an
integer. For more information about how Azure Logic Apps handles content types
during conversion, see Handle
content types. For the full reference about each function.
Note
Azure Logic Apps automatically or implicitly performs base64
encoding and decoding, so you don't have to manually perform these conversions
by using the encoding and decoding functions. However, if you use these
functions anyway in the designer, you might experience unexpected rendering
behaviors in the designer. These behaviors affect only the functions'
visibility and not their effect unless you edit the functions' parameter
values, which removes the functions and their effects from your code.
Conversion function |
Task |
array |
Return an array from a single specified input. For
multiple inputs. |
base64 |
Return the base64-encoded version for a string. |
base64ToBinary |
Return the binary version for a base64-encoded string. |
base64ToString |
Return the string version for a base64-encoded string. |
binary |
Return the binary version for an input value. |
bool |
Return the Boolean version for an input value. |
createArray |
Return an array from multiple inputs. |
dataUri |
Return the data URI for an input value. |
dataUriToBinary |
Return the binary version for a data URI. |
dataUriToString |
Return the string version for a data URI. |
decimal |
Return the decimal number for a decimal string. |
decodeBase64 |
Return the string version for a base64-encoded string. |
decodeDataUri |
Return the binary version for a data URI. |
decodeUriComponent |
Return a string that replaces escape characters with
decoded versions. |
encodeUriComponent |
Return a string that replaces URL-unsafe characters with
escape characters. |
float |
Return a floating point number for an input value. |
int |
Return the integer version for a string. |
json |
Return the JavaScript Object Notation (JSON) type value or
object for a string or XML. |
string |
Return the string version for an input value. |
uriComponent |
Return the URI-encoded version for an input value by
replacing URL-unsafe characters with escape characters. |
uriComponentToBinary |
Return the binary version for a URI-encoded string. |
uriComponentToString |
Return the string version for a URI-encoded string. |
xml |
Return the XML version for a string. |
- Implicit data type conversions
Azure Logic Apps automatically or implicitly converts
between some data types, so you don't have to manually perform these
conversions. For example, if you use non-string values where strings are
expected as inputs, Azure Logic Apps automatically converts the non-string
values into strings.
For example, suppose a trigger returns a numerical value as
output:
triggerBody()?['123']
If you use this numerical output where string input is
expected, such as a URL, Azure Logic Apps automatically converts the value into
a string by using the curly braces ({}) notation:
@{triggerBody()?['123']}
- Base64 encoding and
decoding
Azure Logic Apps automatically or implicitly performs base64
encoding or decoding, so you don't have to manually perform these conversions
by using the corresponding functions:
- base64(<value>)
- base64ToBinary(<value>)
- base64ToString(<value>)
- base64(decodeDataUri(<value>))
- concat('data:;base64,',<value>)
- concat('data:,',encodeUriComponent(<value>))
- decodeDataUri(<value>)
Note
If you manually add any of these functions while using the
designer, either directly to a trigger or action or by using the expression
editor, navigate away from the designer, and then return to the designer, the
function disappears from the designer, leaving behind only the parameter
values. This behavior also happens if you select a trigger or action that uses
this function without editing the function's parameter values. This result
affects only the function's visibility and not the effect. In code view, the
function is unaffected. However, if you edit the function's parameter values,
the function and its effect are both removed from code view, leaving behind
only the function's parameter values.
- Math functions
To work with integers and floats, you can use these math functions. For the full reference about each function.
Math function |
Task |
add |
Return the result from adding two numbers. |
div |
Return the result from dividing two numbers. |
max |
Return the highest value from a set of numbers or an
array. |
min |
Return the lowest value from a set of numbers or an array. |
mod |
Return the remainder from dividing two numbers. |
mul |
Return the product from multiplying two numbers. |
rand |
Return a random integer from a specified range. |
range |
Return an integer array that starts from a specified
integer. |
sub |
Return the result from subtracting the second number from
the first number. |
To work with dates and times, you can use these date and time functions. For the full reference about each function.
Date or time function |
Task |
addDays |
Add days to a timestamp. |
addHours |
Add hours to a timestamp. |
addMinutes |
Add minutes to a timestamp. |
addSeconds |
Add seconds to a timestamp. |
addToTime |
Add specified time units to a timestamp. See also getFutureTime. |
convertFromUtc |
Convert a timestamp from Universal Time Coordinated (UTC)
to the target time zone. |
convertTimeZone |
Convert a timestamp from the source time zone to the
target time zone. |
convertToUtc |
Convert a timestamp from the source time zone to Universal
Time Coordinated (UTC). |
dateDifference |
Return the difference between two dates as a timespan. |
dayOfMonth |
Return the day of the month component from a timestamp. |
dayOfWeek |
Return the day of the week component from a timestamp. |
dayOfYear |
Return the day of the year component from a timestamp. |
formatDateTime |
Return the date from a timestamp. |
getFutureTime |
Return the current timestamp plus the specified time
units. See also addToTime. |
getPastTime |
Return the current timestamp minus the specified time
units. See also subtractFromTime. |
parseDateTime |
Return the timestamp from a string that contains a
timestamp. |
startOfDay |
Return the start of the day for a timestamp. |
startOfHour |
Return the start of the hour for a timestamp. |
startOfMonth |
Return the start of the month for a timestamp. |
subtractFromTime |
Subtract a number of time units from a timestamp. See
also getPastTime. |
ticks |
Return the ticks property value for a specified
timestamp. |
utcNow |
Return the current timestamp as a string. |
These workflow functions can help you:
- Get
details about a workflow instance at run time.
- Work
with the inputs used for instantiating logic apps or flows.
- Reference
the outputs from triggers and actions.
For example, you can reference the outputs from one action and use that data in a later action. For the full reference about each function.
Workflow function |
Task |
action |
Return the current action's output at runtime, or values
from other JSON name-and-value pairs. See also actions. |
actionBody |
Return an action's body output at runtime. See
also body. |
actionOutputs |
Return an action's output at runtime. See outputs and actions. |
actions |
Return an action's output at runtime, or values from other
JSON name-and-value pairs. See also action. |
body |
Return an action's body output at runtime. See
also actionBody. |
formDataMultiValues |
Create an array with the values that match a key name
in form-data or form-encoded action
outputs. |
formDataValue |
Return a single value that matches a key name in an
action's form-data or form-encoded output. |
item |
If this function appears inside a repeating action over an
array, return the current item in the array during the action's current
iteration. |
items |
If this function appears inside a Foreach or Until loop,
return the current item from the specified loop. |
iterationIndexes |
If this function appears inside an Until loop, return the
index value for the current iteration. You can use this function inside
nested Until loops. |
listCallbackUrl |
Return the "callback URL" that calls a trigger
or action. |
multipartBody |
Return the body for a specific part in an action's output
that has multiple parts. |
outputs |
Return an action's output at runtime. |
parameters |
Return the value for a parameter that is described in your
workflow definition. |
result |
Return the inputs and outputs from the top-level actions
inside the specified scoped action, such as For_each, Until,
and Scope. |
trigger |
Return a trigger's output at runtime, or from other JSON
name-and-value pairs. See also triggerOutputs and triggerBody. |
triggerBody |
Return a trigger's body output at runtime.
See trigger. |
triggerFormDataValue |
Return a single value matching a key name in form-data or form-encoded trigger
outputs. |
triggerMultipartBody |
Return the body for a specific part in a trigger's
multipart output. |
triggerFormDataMultiValues |
Create an array whose values match a key name in form-data or form-encoded trigger
outputs. |
triggerOutputs |
Return a trigger's output at runtime, or values from other
JSON name-and-value pairs. See trigger. |
variables |
Return the value for a specified variable. |
workflow |
Return all the details about the workflow itself during
run time. |
- URI parsing functions
To work with uniform resource identifiers (URIs) and get various property values for these URIs, you can use these URI parsing functions. For the full reference about each function.
URI parsing function |
Task |
uriHost |
Return the host value for a uniform resource
identifier (URI). |
uriPath |
Return the path value for a uniform resource
identifier (URI). |
uriPathAndQuery |
Return the path and query values for a
uniform resource identifier (URI). |
uriPort |
Return the port value for a uniform resource
identifier (URI). |
uriQuery |
Return the query value for a uniform resource
identifier (URI). |
uriScheme |
Return the scheme value for a uniform resource
identifier (URI). |
- Manipulation functions: JSON & XML
To work with JSON objects and XML nodes, you can use these manipulation functions. For the full reference about each function.
Manipulation function |
Task |
addProperty |
Add a property and its value, or name-value pair, to a
JSON object, and return the updated object. |
coalesce |
Return the first non-null value from one or more
parameters. |
removeProperty |
Remove a property from a JSON object and return the
updated object. |
setProperty |
Set the value for a JSON object's property and return the
updated object. |
xpath |
Check XML for nodes or values that match an XPath (XML
Path Language) expression, and return the matching nodes or values. |
------------------------------------------------------------------------------------------------------------------------------------------
All functions -
alphabetical list
This section lists all the available functions in
alphabetical order.
A
Return the current action's output at
runtime, or values from other JSON name-and-value pairs, which you can assign
to an expression. By default, this function references the entire action
object, but you can optionally specify a property whose value you want.
You can use the action() function only in these
places:
- The unsubscribe property
for a webhook action so you can access the result from the original subscribe request
- The trackedProperties property
for an action
- The do-until loop
condition for an action
action()
action().outputs.body.<property>
Parameter |
Required |
Type |
Description |
<property> |
No |
String |
The name for the action object's property whose value you
want: name, startTime, endTime, inputs, outputs, status, code, trackingId,
and clientTrackingId. In the Azure portal, you can find these
properties by reviewing a specific run history's details. For more
information, see REST
API - Workflow Run Actions. |
Return value |
Type |
Description |
<action-output> |
String |
The output from the current action or property |
- actionBody
Return an action's body output at runtime. Shorthand for actions('<actionName>').outputs.body.
actionBody('<actionName>')
Parameter |
Required |
Type |
Description |
<actionName> |
Yes |
String |
The name for the action's body output that you
want |
Return value |
Type |
Description |
<action-body-output> |
String |
The body output from the specified action |
Example
This example gets the body output from the Twitter
action Get user:
actionBody('Get_user')
And returns this result:
"body": {
"FullName":
"Contoso Corporation",
"Location":
"Generic Town, USA",
"Id": 283541717,
"UserName":
"ContosoInc",
"FollowersCount":
172,
"Description":
"Leading the way in transforming the digital workplace.",
"StatusesCount":
93,
"FriendsCount":
126,
"FavouritesCount":
46,
"ProfileImageUrl":
"https://pbs.twimg.com/profile_images/908820389907722240/gG9zaHcd_400x400.jpg"
}
- actionOutputs
Return an action's output at runtime. and is shorthand for actions('<actionName>').outputs. The actionOutputs() function resolves to outputs() in the designer, so consider using outputs(), rather than actionOutputs(). Although both functions work the same way, outputs() is preferred.
actionOutputs('<actionName>')
Parameter |
Required |
Type |
Description |
<actionName> |
Yes |
String |
The name for the action's output that you want |
Return value |
Type |
Description |
<output> |
String |
The output from the specified action |
Example
This example gets the output from the Twitter action Get
user:
actionOutputs('Get_user')
And returns this result:
{
"statusCode":
200,
"headers":
{
"Pragma":
"no-cache",
"Vary": "Accept-Encoding",
"x-ms-request-id":
"a916ec8f52211265d98159adde2efe0b",
"X-Content-Type-Options":
"nosniff",
"Timing-Allow-Origin":
"*",
"Cache-Control":
"no-cache",
"Date": "Mon,
09 Apr 2018 18:47:12 GMT",
"Set-Cookie":
"ARRAffinity=b9400932367ab5e3b6802e3d6158afffb12fcde8666715f5a5fbd4142d0f0b7d;Path=/;HttpOnly;Domain=twitter-wus.azconn-wus.p.azurewebsites.net",
"X-AspNet-Version":
"4.0.30319",
"X-Powered-By":
"ASP.NET",
"Content-Type":
"application/json; charset=utf-8",
"Expires":
"-1",
"Content-Length":
"339"
},
"body": {
"FullName":
"Contoso Corporation",
"Location":
"Generic Town, USA",
"Id": 283541717,
"UserName":
"ContosoInc",
"FollowersCount":
172,
"Description":
"Leading the way in transforming the digital workplace.",
"StatusesCount":
93,
"FriendsCount":
126,
"FavouritesCount":
46,
"ProfileImageUrl":
"https://pbs.twimg.com/profile_images/908820389907722240/gG9zaHcd_400x400.jpg"
}
}
- actions
Return an action's output at runtime, or values from other
JSON name-and-value pairs, which you can assign to an expression. By default,
the function references the entire action object, but you can optionally
specify a property whose value that you want.
The actions() function returns output as a string. If you need to work with a returned value as a JSON object, you first need to convert the string value. You can transform the string value into a JSON object using the Parse JSON action.
Previously, you could use the actions() function
or the conditions element when specifying that an action ran based on
the output from another action. However, to declare explicitly dependencies
between actions, you must now use the dependent action's runAfter property.
To learn more about the runAfter property, see Catch
and handle failures with the runAfter property.
actions('<actionName>')
actions('<actionName>').outputs.body.<property>
Parameter |
Required |
Type |
Description |
<actionName> |
Yes |
String |
The name for the action object whose output you want |
<property> |
No |
String |
The name for the action object's property whose value you
want: name, startTime, endTime, inputs, outputs, status, code, trackingId,
and clientTrackingId. In the Azure portal, you can find these
properties by reviewing a specific run history's details. For more
information, see REST
API - Workflow Run Actions. |
Return value |
Type |
Description |
<action-output> |
String |
The output from the specified action or property |
Example
This example gets the status property value from
the Twitter action Get user at runtime:
actions('Get_user').outputs.body.status
And returns this result: "Succeeded"
- add
Return the result from adding two numbers.
add(<summand_1>, <summand_2>)
Parameter |
Required |
Type |
Description |
<summand_1>, <summand_2> |
Yes |
Integer, Float, or mixed |
The numbers to add |
Return value |
Type |
Description |
<result-sum> |
Integer or Float |
The result from adding the specified numbers |
Example
This example adds the specified numbers:
add(1, 1.5)
And returns this result: 2.5
- addDays
Add days to a timestamp.
addDays('<timestamp>', <days>,
'<format>'?)
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
<days> |
Yes |
Integer |
The positive or negative number of days to add |
<format> |
No |
String |
A numeric format string that is either a single
format specifier or a custom
format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK),
which complies with ISO
8601 and preserves time zone information. |
Example 1
This example adds 10 days to the specified timestamp:
addDays('2018-03-15T00:00:00Z', 10)
And returns this result: "2018-03-25T00:00:00.0000000Z"
Example 2
This example subtracts five days from the specified
timestamp:
addDays('2018-03-15T00:00:00Z', -5)
And returns this result: "2018-03-10T00:00:00.0000000Z"
- addHours
Add hours to a timestamp.
addHours('<timestamp>', <hours>,
'<format>'?)
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
<hours> |
Yes |
Integer |
The positive or negative number of hours to add |
<format> |
No |
String |
A numeric format string that is either a single
format specifier or a custom
format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK),
which complies with ISO
8601 and preserves time zone information. |
Return value |
Type |
Description |
<updated-timestamp> |
String |
The timestamp plus the specified number of hours |
Example 1
This example adds 10 hours to the specified timestamp:
addHours('2018-03-15T00:00:00Z', 10)
And returns this result: "2018-03-15T10:00:00.0000000Z"
Example 2
This example subtracts five hours from the specified
timestamp:
addHours('2018-03-15T15:00:00Z', -5)
And returns this result: "2018-03-15T10:00:00.0000000Z"
Add minutes to a timestamp.
addMinutes('<timestamp>', <minutes>,
'<format>'?)
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
<minutes> |
Yes |
Integer |
The positive or negative number of minutes to add |
<format> |
No |
String |
A numeric format string that is either a single
format specifier or a custom
format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK),
which complies with ISO
8601 and preserves time zone information. |
Return value |
Type |
Description |
<updated-timestamp> |
String |
The timestamp plus the specified number of minutes |
Example 1
This example adds 10 minutes to the specified timestamp:
addMinutes('2018-03-15T00:10:00Z', 10)
And returns this result: "2018-03-15T00:20:00.0000000Z"
Example 2
This example subtracts five minutes from the specified
timestamp:
addMinutes('2018-03-15T00:20:00Z', -5)
And returns this result: "2018-03-15T00:15:00.0000000Z"
- addProperty
Add a property and its value, or name-value pair, to a JSON
object, and return the updated object. If the property already exists at
runtime, the function fails and throws an error.
addProperty(<object>, '<property>',
<value>)
Parameter |
Required |
Type |
Description |
<object> |
Yes |
Object |
The JSON object where you want to add a property |
<property> |
Yes |
String |
The name for the property to add |
<value> |
Yes |
Any |
The value for the property |
Return value |
Type |
Description |
<updated-object> |
Object |
The updated JSON object with the specified property |
To add a parent property to an existing property, use
the setProperty() function, not the addProperty() function.
Otherwise, the function returns only the child object as output.
setProperty(<object>, '<parent-property>',
addProperty(<object>['<parent-property>'],
'<child-property>', <value>)
Parameter |
Required |
Type |
Description |
<object> |
Yes |
Object |
The JSON object where you want to add a property |
<parent-property> |
Yes |
String |
The name for parent property where you want to add the
child property |
<child-property> |
Yes |
String |
The name for the child property to add |
<value> |
Yes |
Any |
The value to set for the specified property |
Return value |
Type |
Description |
<updated-object> |
Object |
The updated JSON object whose property you set |
Example 1
This example adds the middleName property to a JSON object, which is converted from a string to JSON by using the JSON() function. The object already includes the firstName and surName properties. The function assigns the specified value to the new property and returns the updated object:
addProperty(json('{ "firstName":
"Sophia", "lastName": "Owen" }'), 'middleName',
'Anne')
Here's the current JSON object:
{
"firstName":
"Sophia",
"surName":
"Owen"
}
Here's the updated JSON object:
JSONCopy
{
"firstName":
"Sophia",
"middleName":
"Anne",
"surName":
"Owen"
}
Example 2
This example adds the middleName child property to the existing customerName property in a JSON object, which is converted from a string to JSON by using the JSON() function. The function assigns the specified value to the new property and returns the updated object:
setProperty(json('{ "customerName": {
"firstName": "Sophia", "surName":
"Owen" } }'), 'customerName', addProperty(json('{
"customerName": { "firstName": "Sophia",
"surName": "Owen" } }')['customerName'], 'middleName',
'Anne'))
Here's the current JSON object:
{
"customerName":
{
"firstName":
"Sophia",
"surName":
"Owen"
}
}
Here's the updated JSON object:
{
"customerName":
{
"firstName":
"Sophia",
"middleName":
"Anne",
"surName":
"Owen"
}
}
- addSeconds
Add seconds to a timestamp.
addSeconds('<timestamp>', <seconds>,
'<format>'?)
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
<seconds> |
Yes |
Integer |
The positive or negative number of seconds to add |
<format> |
No |
String |
A numeric format string that is either a single
format specifier or a custom
format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK),
which complies with ISO
8601 and preserves time zone information. |
Return value |
Type |
Description |
<updated-timestamp> |
String |
The timestamp plus the specified number of seconds |
Example 1
This example adds 10 seconds to the specified timestamp:
addSeconds('2018-03-15T00:00:00Z', 10)
And returns this result: "2018-03-15T00:00:10.0000000Z"
Example 2
This example subtracts five seconds to the specified
timestamp:
addSeconds('2018-03-15T00:00:30Z', -5)
And returns this result: "2018-03-15T00:00:25.0000000Z"
- addToTime
Add the specified time units to a timestamp.
addToTime('<timestamp>', <interval>,
'<timeUnit>', '<format>'?)
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
<interval> |
Yes |
Integer |
The number of specified time units to add |
<timeUnit> |
Yes |
String |
The unit of time to use with interval:
"Second", "Minute", "Hour", "Day",
"Week", "Month", "Year" |
<format> |
No |
String |
A numeric format string that is either a single
format specifier or a custom
format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK),
which complies with ISO
8601 and preserves time zone information. |
Return value |
Type |
Description |
<updated-timestamp> |
String |
The timestamp plus the specified number of time units |
Example 1
This example adds one day to the specified timestamp:
addToTime('2018-01-01T00:00:00Z', 1, 'Day')
And returns this result: "2018-01-02T00:00:00.0000000Z"
Example 2
This example adds one day to the specified timestamp:
addToTime('2018-01-01T00:00:00Z', 1, 'Day', 'D')
And returns the result using the optional "D"
format: "Tuesday, January 2, 2018"
- and
Check whether all expressions are true. Return true when all
expressions are true, or return false when at least one expression is false.
and(<expression1>, <expression2>, ...)
Parameter |
Required |
Type |
Description |
<expression1>, <expression2>,
... |
Yes |
Boolean |
The expressions to check |
Return value |
Type |
Description |
true or false |
Boolean |
Return true when all expressions are true. Return false
when at least one expression is false. |
Example 1
These examples check whether the specified Boolean values
are all true:
and(true, true)
and(false, true)
and(false, false)
And returns these results:
- First
example: Both expressions are true, so returns true.
- Second
example: One expression is false, so returns false.
- Third
example: Both expressions are false, so returns false.
Example 2
These examples check whether the specified expressions are
all true:
and(equals(1, 1), equals(2, 2))
and(equals(1, 1), equals(1, 2))
and(equals(1, 2), equals(1, 3))
And returns these results:
- First
example: Both expressions are true, so returns true.
- Second
example: One expression is false, so returns false.
- Third
example: Both expressions are false, so returns false.
- array
Return an array from a single specified input. For multiple
inputs.
array('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The string for creating an array |
Return value |
Type |
Description |
[<value>] |
Array |
An array that contains the single specified input |
Example
This example creates an array from the "hello"
string:
array('hello')
And returns this result: ["hello"]
B
Return the base64-encoded version for a string.
Note
Azure Logic Apps automatically or implicitly performs base64
encoding and decoding, so you don't have to manually perform these conversions
by using the encoding and decoding functions. However, if you use these
functions anyway, you might experience unexpected rendering behaviors in the
designer. These behaviors affect only the functions' visibility and not their
effect unless you edit the functions' parameter values, which removes the
functions and their effects from your code.
base64('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The input string |
Return value |
Type |
Description |
<base64-string> |
String |
The base64-encoded version for the input string |
Example
This example converts the "hello" string to a
base64-encoded string:
base64('hello')
And returns this result: "aGVsbG8="
- base64ToBinary
Return the binary version for a base64-encoded string.
Note
Azure Logic Apps automatically or implicitly performs base64
encoding and decoding, so you don't have to manually perform these conversions
by using the encoding and decoding functions. However, if you use these
functions anyway in the designer, you might experience unexpected rendering
behaviors in the designer. These behaviors affect only the functions'
visibility and not their effect unless you edit the functions' parameter
values, which removes the functions and their effects from your code.
base64ToBinary('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The base64-encoded string to convert |
Return value |
Type |
Description |
<binary-for-base64-string> |
String |
The binary version for the base64-encoded string |
Example
This example converts the "aGVsbG8="
base64-encoded string to a binary string:
base64ToBinary('aGVsbG8=')
For example, suppose you're using an HTTP action to send a
request. You can use base64ToBinary() to convert a base64-encoded
string to binary data and send that data using the application/octet-stream content
type in the request.
- base64ToString
Return the string version for a base64-encoded string, effectively decoding the base64 string. Use this function rather than decodeBase64(), which is deprecated.
Note
Azure Logic Apps automatically or implicitly performs base64
encoding and decoding, so you don't have to manually perform these conversions
by using the encoding and decoding functions. However, if you use these
functions anyway in the designer, you might experience unexpected rendering
behaviors in the designer. These behaviors affect only the functions'
visibility and not their effect unless you edit the functions' parameter
values, which removes the functions and their effects from your code.
base64ToString('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The base64-encoded string to decode |
Return value |
Type |
Description |
<decoded-base64-string> |
String |
The string version for a base64-encoded string |
Example
This example converts the "aGVsbG8="
base64-encoded string to just a string:
base64ToString('aGVsbG8=')
And returns this result: "hello"
- binary
Return the base64-encoded binary version of a string.
binary('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The string to convert |
Return value |
Type |
Description |
<binary-for-input-value> |
String |
The base64-encoded binary version for the specified string |
Example
For example, you're using an HTTP action that returns an
image or video file. You can use binary() to convert the value to a
base-64 encoded content envelope model. Then, you can reuse the content
envelope in other actions, such as Compose. You can use this function
expression to send the string bytes with the application/octet-stream content
type in the request.
- body
Return an action's body output at runtime.
Shorthand for actions('<actionName>').outputs.body.
body('<actionName>')
Parameter |
Required |
Type |
Description |
<actionName> |
Yes |
String |
The name for the action's body output that you
want |
Return value |
Type |
Description |
<action-body-output> |
String |
The body output from the specified action |
Example
This example gets the body output from the Get
user Twitter action:
body('Get_user')
And returns this result:
"body": {
"FullName":
"Contoso Corporation",
"Location":
"Generic Town, USA",
"Id": 283541717,
"UserName":
"ContosoInc",
"FollowersCount":
172,
"Description":
"Leading the way in transforming the digital workplace.",
"StatusesCount":
93,
"FriendsCount":
126,
"FavouritesCount":
46,
"ProfileImageUrl":
"https://pbs.twimg.com/profile_images/908820389907722240/gG9zaHcd_400x400.jpg"
}
- bool
Return the Boolean version of a value.
bool(<value>)
Parameter |
Required |
Type |
Description |
<value> |
Yes |
Any |
The value to convert to Boolean. |
If you're using bool() with an object, the value
of the object must be a string or integer that can be converted to Boolean.
Return value |
Type |
Description |
true or false |
Boolean |
The Boolean version of the specified value. |
Outputs
These examples show the different supported types of input
for bool():
Input value |
Type |
Return value |
bool(1) |
Integer |
true |
bool(0) |
Integer |
false |
bool(-1) |
Integer |
true |
bool('true') |
String |
true |
bool('false') |
String |
false |
C
Split a string or array into chunks of equal length.
chunk('<collection>', '<length>')
chunk([<collection>], '<length>')
Parameter |
Required |
Type |
Description |
<collection> |
Yes |
String or Array |
The collection to split |
<length> |
Yes |
The length of each chunk |
|
Return value |
Type |
Description |
<collection> |
Array |
An array of chunks with the specified length |
Example 1
This example splits a string into chunks of length 10:
chunk('abcdefghijklmnopqrstuvwxyz', 10)
And returns this result: ['abcdefghij', 'klmnopqrst',
'uvwxyz']
Example 2
This example splits an array into chunks of length 5.
chunk(createArray(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), 5)
And returns this result: [ [1,2,3,4,5], [6,7,8,9,10],
[11,12] ]
- coalesce
Return the first non-null value from one or more parameters.
Empty strings, empty arrays, and empty objects aren't null.
coalesce(<object_1>, <object_2>, ...)
Parameter |
Required |
Type |
Description |
<object_1>, <object_2>, ... |
Yes |
Any, can mix types |
One or more items to check for null |
Return value |
Type |
Description |
<first-non-null-item> |
Any |
The first item or value that isn't null. If all parameters
are null, this function returns null. |
Example
These examples return the first non-null value from the
specified values, or null when all the values are null:
coalesce(null, true, false)
coalesce(null, 'hello', 'world')
coalesce(null, null, null)
And returns these results:
- First
example: true
- Second
example: "hello"
- Third
example: null
- concat
Combine two or more strings, and return the combined string.
concat('<text1>', '<text2>', ...)
Parameter |
Required |
Type |
Description |
<text1>, <text2>, ... |
Yes |
String |
At least two strings to combine |
Return value |
Type |
Description |
<text1text2...> |
String |
The string created from the combined input strings. |
Note
Azure Logic Apps automatically or implicitly performs base64
encoding and decoding, so you don't have to manually perform these conversions
when you use the concat() function with data that needs encoding or
decoding:
- concat('data:;base64,',<value>)
- concat('data:,',encodeUriComponent(<value>))
However, if you use this function anyway in the designer,
you might experience unexpected rendering behaviors in the designer. These
behaviors affect only the function's visibility and not the effect unless you
edit the function's parameter values, which removes the function and the effect
from your code.
Example
This example combines the strings "Hello" and
"World":
concat('Hello', 'World')
And returns this result: "HelloWorld"
- contains
Check whether a collection has a specific item. Return true
when the item is found, or return false when not found. This function is
case-sensitive.
contains('<collection>', '<value>')
contains([<collection>], '<value>')
Specifically, this function works on these collection types:
- A string to
find a substring
- An array to
find a value
- A dictionary to
find a key
Parameter |
Required |
Type |
Description |
<collection> |
Yes |
String, Array, or Dictionary |
The collection to check |
<value> |
Yes |
String, Array, or Dictionary, respectively |
The item to find |
Return value |
Type |
Description |
true or false |
Boolean |
Return true when the item is found. Return false when not
found. |
Example 1
This example checks the string "hello world" for
the substring "world" and returns true:
contains('hello world', 'world')
Example 2
This example checks the string "hello world" for
the substring "universe" and returns false:
contains('hello world', 'universe')
Convert a timestamp from Universal Time Coordinated (UTC) to
the target time zone.
convertFromUtc('<timestamp>',
'<destinationTimeZone>', '<format>'?)
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
<destinationTimeZone> |
Yes |
String |
The name for the target time zone. For time zone names,
review Microsoft
Windows Default Time Zones. |
<format> |
No |
String |
A numeric format string that is either a single
format specifier or a custom
format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK),
which complies with ISO
8601 and preserves time zone information. |
Example 1
This example converts a timestamp to the specified time
zone:
convertFromUtc('2018-01-01T08:00:00.0000000Z', 'Pacific
Standard Time')
And returns this result: "2018-01-01T00:00:00.0000000"
Example 2
This example converts a timestamp to the specified time zone
and format:
convertFromUtc('2018-01-01T08:00:00.0000000Z', 'Pacific
Standard Time', 'D')
And returns this result: "Monday, January 1,
2018"
- convertTimeZone
Convert a timestamp from the source time zone to the target
time zone.
convertTimeZone('<timestamp>',
'<sourceTimeZone>', '<destinationTimeZone>', '<format>'?)
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
<sourceTimeZone> |
Yes |
String |
The name for the source time zone. For time zone names,
see Microsoft
Windows Default Time Zones, but you might have to remove any punctuation
from the time zone name. |
<destinationTimeZone> |
Yes |
String |
The name for the target time zone. For time zone names,
see Microsoft
Windows Default Time Zones, but you might have to remove any punctuation
from the time zone name. |
<format> |
No |
String |
A numeric format string that is either a single
format specifier or a custom
format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK),
which complies with ISO
8601 and preserves time zone information. |
Return value |
Type |
Description |
<converted-timestamp> |
String |
The timestamp converted to the target time zone |
Example 1
This example converts the source time zone to the target
time zone:
convertTimeZone('2018-01-01T08:00:00.0000000Z', 'UTC',
'Pacific Standard Time')
And returns this result: "2018-01-01T00:00:00.0000000"
Example 2
This example converts a time zone to the specified time zone
and format:
convertTimeZone('2018-01-01T80:00:00.0000000Z', 'UTC',
'Pacific Standard Time', 'D')
And returns this result: "Monday, January 1,
2018"
- convertToUtc
Convert a timestamp from the source time zone to Universal
Time Coordinated (UTC).
convertToUtc('<timestamp>', '<sourceTimeZone>',
'<format>'?)
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
<sourceTimeZone> |
Yes |
String |
The name for the source time zone. For time zone names,
see Microsoft
Windows Default Time Zones, but you might have to remove any punctuation
from the time zone name. |
<format> |
No |
String |
A numeric format string that is either a single
format specifier or a custom
format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK),
which complies with ISO
8601 and preserves time zone information. |
Return value |
Type |
Description |
<converted-timestamp> |
String |
The timestamp converted to UTC |
Example 1
This example converts a timestamp to UTC:
convertToUtc('01/01/2018 00:00:00', 'Pacific Standard Time')
And returns this result: "2018-01-01T08:00:00.0000000Z"
Example 2
This example converts a timestamp to UTC:
convertToUtc('01/01/2018 00:00:00', 'Pacific Standard Time',
'D')
And returns this result: "Monday, January 1,
2018"
- createArray
Return an array from multiple inputs. For single input
arrays.
createArray('<object1>', '<object2>', ...)
Parameter |
Required |
Type |
Description |
<object1>, <object2>, ... |
Yes |
Any, but not mixed |
At least two items to create the array |
Return value |
Type |
Description |
[<object1>, <object2>, ...] |
Array |
The array created from all the input items |
Example
This example creates an array from these inputs:
createArray('h', 'e', 'l', 'l', 'o')
And returns this result: ["h", "e",
"l", "l", "o"]
D
Return a data uniform resource identifier (URI) for a
string.
dataUri('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The string to convert |
Return value |
Type |
Description |
<data-uri> |
String |
The data URI for the input string |
Example
This example creates a data URI for the "hello"
string:
dataUri('hello')
And returns this result: "data:text/plain;charset=utf-8;base64,aGVsbG8="
- dataUriToBinary
Return the binary version for a data uniform resource identifier (URI). Use this function rather than decodeDataUri(). Although both functions work the same way, dataUriBinary() is preferred.
dataUriToBinary('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The data URI to convert |
Example
This example creates a binary version for this data URI:
dataUriToBinary('data:text/plain;charset=utf-8;base64,aGVsbG8=')
And returns this result:
"01100100011000010111010001100001001110100111010001100101011110000111010000101111011100000
1101100011000010110100101101110001110110110001101101000011000010111001001110011011001010111
0100001111010111010101110100011001100010110100111000001110110110001001100001011100110110010
10011011000110100001011000110000101000111010101100111001101100010010001110011100000111101"
- dataUriToString
Return the string version for a data uniform resource
identifier (URI).
dataUriToString('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The data URI to convert |
Return value |
Type |
Description |
<string-for-data-uri> |
String |
The string version for the data URI |
Example
This example creates a string for this data URI:
dataUriToString('data:text/plain;charset=utf-8;base64,aGVsbG8=')
And returns this result: "hello"
- dateDifference
Return the difference between two timestamps as a timespan.
This function subtracts startDate from endDate, and returns the
result as timestamp in string format.
dateDifference('<startDate>', '<endDate>')
Parameter |
Required |
Type |
Description |
<startDate> |
Yes |
String |
A string that contains a timestamp |
<endDate> |
Yes |
String |
A string that contains a timestamp |
Return value |
Type |
Description |
<timespan> |
String |
The difference between the two timestamps, which is a
timestamp in string format. If startDate is more recent than endDate,
the result is a negative value. |
Example
This example subtracts the first value from the second
value:
dateDifference('2015-02-08', '2018-07-30')
And returns this result: "1268.00:00:00"
- dayOfMonth
Return the day of the month from a timestamp.
dayOfMonth('<timestamp>')
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
Return value |
Type |
Description |
<day-of-month> |
Integer |
The day of the month from the specified timestamp |
Example
This example returns the number for the day of the month
from this timestamp:
dayOfMonth('2018-03-15T13:27:36Z')
And returns this result: 15
- dayOfWeek
Return the day of the week from a timestamp.
dayOfWeek('<timestamp>')
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
Return value |
Type |
Description |
<day-of-week> |
Integer |
The day of the week from the specified timestamp where
Sunday is 0, Monday is 1, and so on |
Example
This example returns the number for the day of the week from
this timestamp:
dayOfWeek('2018-03-15T13:27:36Z')
And returns this result: 4
- dayOfYear
Return the day of the year from a timestamp.
dayOfYear('<timestamp>')
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
Return value |
Type |
Description |
<day-of-year> |
Integer |
The day of the year from the specified timestamp |
Example
This example returns the number of the day of the year from
this timestamp:
dayOfYear('2018-03-15T13:27:36Z')
And returns this result: 74
- decimal
Returns a decimal number in a string as a decimal number. You can use this function when you're working with data that requires decimal precision and also as input for logical comparison functions and math functions. To capture and preserve precision when you use the result from the decimal() function, wrap any decimal output with the string function. This usage is shown in the following examples below where you can lose precision if you use the decimal result as a number.
Note
The decimal precision that's discussed in the context for
this function and the Azure Logic Apps runtime is the same as the .NET
decimal precision.
decimal('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The decimal number in a string |
Return value |
Type |
Description |
<decimal> |
Decimal Number |
The decimal number for the input string |
Example 1
This example creates a decimal that's used as a number:
decimal('1.2345678912312131') // Returns 1.234567891231213.
Example 2
This example creates a decimal and then converts the result
to a string for precision preservation:
string(decimal('1.2345678912312131')) // Returns
"1.2345678912312131".
Example 3
This example uses a math function on two decimal numbers and
uses the result as a number:
add(decimal('1.2345678912312131'),
decimal('1.2345678912312131')) // Returns 2.469135782462426.
Example 4
This example uses a math function on two decimal numbers and
converts the result to a string for precision preservation:
string(add(decimal('1.2345678912312131'),
decimal('1.2345678912312131'))) // Returns "2.4691357824624262".
- decodeBase64
This function is deprecated, so use base64ToString() instead.
- decodeDataUri
Return the binary version for a data uniform resource identifier (URI). Consider using dataUriToBinary(), rather than decodeDataUri(). Although both functions work the same way, dataUriToBinary() is preferred.
Note
Azure Logic Apps automatically or implicitly performs base64
encoding and decoding, so you don't have to manually perform these conversions
by using the encoding and decoding functions. However, if you use these
functions anyway in the designer, you might experience unexpected rendering
behaviors in the designer. These behaviors affect only the functions'
visibility and not their effect unless you edit the functions' parameter
values, which removes the functions and their effects from your code.
decodeDataUri('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The data URI string to decode |
Return value |
Type |
Description |
<binary-for-data-uri> |
String |
The binary version for a data URI string |
Example
This example returns the binary version for this data URI:
decodeDataUri('data:text/plain;charset=utf-8;base64,aGVsbG8=')
And returns this result:
"01100100011000010111010001100001001110100111010001100101011110000111010000101111011100000
1101100011000010110100101101110001110110110001101101000011000010111001001110011011001010111
0100001111010111010101110100011001100010110100111000001110110110001001100001011100110110010
10011011000110100001011000110000101000111010101100111001101100010010001110011100000111101"
- decodeUriComponent
Return a string that replaces escape characters with decoded
versions.
decodeUriComponent('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The string with the escape characters to decode |
Return value |
Type |
Description |
<decoded-uri> |
String |
The updated string with the decoded escape characters |
Example
This example replaces the escape characters in this string
with decoded versions:
decodeUriComponent('https%3A%2F%2Fcontoso.com')
And returns this result: "https://contoso.com"
- div
Return the result from dividing two numbers.
div(<dividend>, <divisor>)
Parameter |
Required |
Type |
Description |
<dividend> |
Yes |
Integer or Float |
The number to divide by the divisor |
<divisor> |
Yes |
Integer or Float |
The number that divides the dividend, but
can't be zero |
Return value |
Type |
Description |
<quotient-result> |
Integer or Float |
The result from dividing the first number by the second
number. If either the dividend or divisor has Float type, the result has
Float type. |
Example 1
Both examples return this value with Integer type: 2
div(10,5)
div(11,5)
Example 2
Both examples return this value with Float type: 2.2
div(11,5.0)
div(11.0,5)
E
Return a uniform resource identifier (URI) encoded version for a string by replacing URL-unsafe characters with escape characters. Consider using uriComponent(), rather than encodeUriComponent(). Although both functions work the same way, uriComponent() is preferred.
Note
Azure Logic Apps automatically or implicitly performs base64
encoding and decoding, so you don't have to manually perform these conversions
by using the encoding and decoding functions. However, if you use these
functions anyway in the designer, you might experience unexpected rendering
behaviors in the designer. These behaviors affect only the functions'
visibility and not their effect unless you edit the functions' parameter
values, which removes the functions and their effects from your code.
encodeUriComponent('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The string to convert to URI-encoded format |
Return value |
Type |
Description |
<encoded-uri> |
String |
The URI-encoded string with escape characters |
Example
This example creates a URI-encoded version for this string:
encodeUriComponent('https://contoso.com')
And returns this result: "https%3A%2F%2Fcontoso.com"
- empty
Check whether a collection is empty. Return true when the
collection is empty, or return false when not empty.
empty('<collection>')
empty([<collection>])
Parameter |
Required |
Type |
Description |
<collection> |
Yes |
String, Array, or Object |
The collection to check |
Return value |
Type |
Description |
true or false |
Boolean |
Return true when the collection is empty. Return false
when not empty. |
Example
These examples check whether the specified collections are
empty:
empty('')
empty('abc')
And returns these results:
- First
example: Passes an empty string, so the function returns true.
- Second
example: Passes the string "abc", so the function returns false.
- endsWith
Check whether a string ends with a specific substring.
Return true when the substring is found, or return false when not found. This
function isn't case-sensitive.
endsWith('<text>', '<searchText>')
Parameter |
Required |
Type |
Description |
<text> |
Yes |
String |
The string to check |
<searchText> |
Yes |
String |
The ending substring to find |
Return value |
Type |
Description |
true or false |
Boolean |
Return true when the ending substring is found. Return
false when not found. |
Example 1
This example checks whether the "hello world"
string ends with the "world" string:
endsWith('hello world', 'world')
And returns this result: true
Example 2
This example checks whether the "hello world"
string ends with the "universe" string:
endsWith('hello world', 'universe')
And returns this result: false
- equals
Check whether both values, expressions, or objects are
equivalent. Return true when both are equivalent, or return false when they're
not equivalent.
equals('<object1>', '<object2>')
Parameter |
Required |
Type |
Description |
<object1>, <object2> |
Yes |
Various |
The values, expressions, or objects to compare |
Return value |
Type |
Description |
true or false |
Boolean |
Return true when both are equivalent. Return false when
not equivalent. |
Example
These examples check whether the specified inputs are
equivalent.
equals(true, 1)
equals('abc', 'abcd')
And returns these results:
- First
example: Both values are equivalent, so the function returns true.
- Second
example: Both values aren't equivalent, so the function returns false.
F
Return the first item from a string or array.
first('<collection>')
first([<collection>])
Parameter |
Required |
Type |
Description |
<collection> |
Yes |
String or Array |
The collection where to find the first item |
Return value |
Type |
Description |
<first-collection-item> |
Any |
The first item in the collection |
Example
These examples find the first item in these collections:
first('hello')
first(createArray(0, 1, 2))
And return these results:
- First
example: "h"
- Second
example: 0
- float
Convert a string version for a floating-point number to an
actual floating point number. You can use this function only when passing
custom parameters to an app, for example, a logic app workflow or Power
Automate flow. To convert floating-point strings represented in locale-specific
formats, you can optionally specify an RFC 4646 locale code.
float('<value>', '<locale>'?)
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The string that has a valid floating-point number to
convert. The minimum and maximum values are the same as the limits for the
float data type. |
<locale> |
No |
String |
The RFC 4646 locale code to use. |
Return value |
Type |
Description |
<float-value> |
Float |
The floating-point number for the specified string. The
minimum and maximum values are the same as the limits for the float data
type. |
Example 1
This example creates a string version for this
floating-point number:
float('10,000.333')
And returns this result: 10000.333
Example 2
This example creates a string version for this German-style
floating-point number:
float('10.000,333', 'de-DE')
And returns this result: 10000.333
- formatDateTime
Return a timestamp in the specified format.
formatDateTime('<timestamp>', '<format>'?,
'<locale>'?)
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
<format> |
No |
String |
A numeric format string that is either a single
format specifier or a custom
format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK),
which complies with ISO
8601 and preserves time zone information. |
<locale> |
No |
String |
The locale to use. If unspecified, the value is en-us.
If locale isn't a valid value, an error is generated. |
Return value |
Type |
Description |
<reformatted-timestamp> |
String |
The updated timestamp in the specified format and locale,
if specified. |
Examples
formatDateTime('03/15/2018') // Returns
'2018-03-15T00:00:00.0000000'.
formatDateTime('03/15/2018 12:00:00', 'yyyy-MM-ddTHH:mm:ss')
// Returns '2018-03-15T12:00:00'.
formatDateTime('01/31/2016', 'dddd MMMM d') // Returns
'Sunday January 31'.
formatDateTime('01/31/2016', 'dddd MMMM d', 'fr-fr') //
Returns 'dimanche janvier 31'.
formatDateTime('01/31/2016', 'dddd MMMM d', 'fr-FR') //
Returns 'dimanche janvier 31'.
formatDateTime('01/31/2016', 'dddd MMMM d', 'es-es') //
Returns 'domingo enero 31'.
- formDataMultiValues
Return an array with values that match a key name in an
action's form-data or form-encoded output.
formDataMultiValues('<actionName>', '<key>')
Parameter |
Required |
Type |
Description |
<actionName> |
Yes |
String |
The action whose output has the key value you want |
<key> |
Yes |
String |
The name for the key whose value you want |
Return value |
Type |
Description |
[<array-with-key-values>] |
Array |
An array with all the values that match the specified key |
Example
This example creates an array from the "Subject"
key's value in the specified action's form-data or form-encoded output:
formDataMultiValues('Send_an_email', 'Subject')
And returns the subject text in an array, for example: ["Hello
world"]
- formDataValue
Return a single value that matches a key name in an
action's form-data or form-encoded output. If
the function finds more than one match, the function throws an error.
formDataValue('<actionName>', '<key>')
Parameter |
Required |
Type |
Description |
<actionName> |
Yes |
String |
The action whose output has the key value you want |
<key> |
Yes |
String |
The name for the key whose value you want |
Return value |
Type |
Description |
<key-value> |
String |
The value in the specified key |
Example
This example creates a string from the "Subject"
key's value in the specified action's form-data or form-encoded output:
formDataValue('Send_an_email', 'Subject')
And returns the subject text as a string, for example: "Hello
world"
- formatNumber
Return a number as a string that's based on the specified
format.
formatNumber(<number>, <format>,
<locale>?)
Parameter |
Required |
Type |
Description |
<number> |
Yes |
Integer or Double |
The value that you want to format. |
<format> |
Yes |
String |
A composite format string that specifies the format that
you want to use. For the supported numeric format strings, see Standard
numeric format strings, which are supported by number.ToString(<format>,
<locale>). |
<locale> |
No |
String |
The locale to use as supported by number.ToString(<format>,
<locale>). If unspecified, the value is en-us. If locale isn't
a valid value, an error is generated. |
Return value |
Type |
Description |
<formatted-number> |
String |
The specified number as a string in the format that you
specified. You can cast this return value to an int or float. |
Example 1
Suppose that you want to format the number 1234567890.
This example formats that number as the string "1,234,567,890.00".
formatNumber(1234567890, '0,0.00', 'en-us')
*Example 2"
Suppose that you want to format the number 1234567890.
This example formats the number to the string "1.234.567.890,00".
formatNumber(1234567890, '0,0.00', 'is-is')
Example 3
Suppose that you want to format the number 17.35. This
example formats the number to the string "$17.35".
formatNumber(17.35, 'C2')
Example 4
Suppose that you want to format the number 17.35. This
example formats the number to the string "17,35 kr".
formatNumber(17.35, 'C2', 'is-is')
G
Return the current timestamp plus the specified time units.
getFutureTime(<interval>, <timeUnit>,
<format>?)
Parameter |
Required |
Type |
Description |
<interval> |
Yes |
Integer |
The number of time units to add |
<timeUnit> |
Yes |
String |
The unit of time to use with interval:
"Second", "Minute", "Hour", "Day",
"Week", "Month", "Year" |
<format> |
No |
String |
Either a single
format specifier or a custom
format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK),
which complies with ISO
8601 and preserves time zone information. |
Return value |
Type |
Description |
<updated-timestamp> |
String |
The current timestamp plus the specified number of time
units |
Example 1
Suppose the current timestamp is
"2018-03-01T00:00:00.0000000Z". This example adds five days to that
timestamp:
getFutureTime(5, 'Day')
And returns this result: "2018-03-06T00:00:00.0000000Z"
Example 2
Suppose the current timestamp is
"2018-03-01T00:00:00.0000000Z". This example adds five days and
converts the result to "D" format:
getFutureTime(5, 'Day', 'D')
And returns this result: "Tuesday, March 6,
2018"
Return the current timestamp minus the specified time units.
getPastTime(<interval>, <timeUnit>,
<format>?)
Parameter |
Required |
Type |
Description |
<interval> |
Yes |
Integer |
The number of specified time units to subtract |
<timeUnit> |
Yes |
String |
The unit of time to use with interval:
"Second", "Minute", "Hour", "Day",
"Week", "Month", "Year" |
<format> |
No |
String |
Either a single
format specifier or a custom
format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK),
which complies with ISO
8601 and preserves time zone information. |
Return value |
Type |
Description |
<updated-timestamp> |
String |
The current timestamp minus the specified number of time
units |
Example 1
Suppose the current timestamp is
"2018-02-01T00:00:00.0000000Z". This example subtracts five days from
that timestamp:
getPastTime(5, 'Day')
And returns this result: "2018-01-27T00:00:00.0000000Z"
Example 2
Suppose the current timestamp is
"2018-02-01T00:00:00.0000000Z". This example subtracts five days and
converts the result to "D" format:
getPastTime(5, 'Day', 'D')
And returns this result: "Saturday, January 27,
2018"
- greater
Check whether the first value is greater than the second
value. Return true when the first value is more, or return false when less.
greater(<value>, <compareTo>)
greater('<value>', '<compareTo>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
Integer, Float, or String |
The first value to check whether greater than the second
value |
<compareTo> |
Yes |
Integer, Float, or String, respectively |
The comparison value |
Example
These examples check whether the first value is greater than
the second value:
greater(10, 5)
greater('apple', 'banana')
And return these results:
- First
example: true
- Second
example: false
Check whether the first value is greater than or equal to
the second value. Return true when the first value is greater or equal, or
return false when the first value is less.
greaterOrEquals(<value>, <compareTo>)
greaterOrEquals('<value>', '<compareTo>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
Integer, Float, or String |
The first value to check whether greater than or equal to
the second value |
<compareTo> |
Yes |
Integer, Float, or String, respectively |
The comparison value |
Example
These examples check whether the first value is greater or
equal than the second value:
greaterOrEquals(5, 5)
greaterOrEquals('apple', 'banana')
And return these results:
- First
example: true
- Second
example: false
Generate a globally unique identifier (GUID) as a string,
for example, "c2ecc88d-88c8-4096-912c-d6f2e2b138ce":
guid()
Also, you can specify a different format for the GUID other
than the default format, "D", which is 32 digits separated by
hyphens.
guid('<format>')
Parameter |
Required |
Type |
Description |
<format> |
No |
String |
A single format
specifier for the returned GUID. By default, the format is
"D", but you can use "N", "D", "B",
"P", or "X". |
Return value |
Type |
Description |
<GUID-value> |
String |
A randomly generated GUID |
Example
This example generates the same GUID, but as 32 digits,
separated by hyphens, and enclosed in parentheses:
guid('P')
And returns this result: "(c2ecc88d-88c8-4096-912c-d6f2e2b138ce)"
I
Check whether an expression is true or false. Based on the
result, return a specified value. Parameters are evaluated from left to right.
if(<expression>, <valueIfTrue>,
<valueIfFalse>)
Parameter |
Required |
Type |
Description |
<expression> |
Yes |
Boolean |
The expression to check |
<valueIfTrue> |
Yes |
Any |
The value to return when the expression is true |
<valueIfFalse> |
Yes |
Any |
The value to return when the expression is false |
Example
This example returns "yes" because the
specified expression returns true. Otherwise, the example returns "no":
if(equals(1, 1), 'yes', 'no')
- indexOf
Return the starting position or index value for a substring.
This function isn't case-sensitive, and indexes start with the number 0.
indexOf('<text>', '<searchText>')
Parameter |
Required |
Type |
Description |
<text> |
Yes |
String |
The string that has the substring to find |
<searchText> |
Yes |
String |
The substring to find |
Return value |
Type |
Description |
<index-value> |
Integer |
The starting position or index value for the specified
substring. |
Example
This example finds the starting index value for the
"world" substring in the "hello world" string:
indexOf('hello world', 'world')
And returns this result: 6
- int
Convert the string version for an integer to an actual
integer number.
int('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The string version for the integer to convert. The minimum
and maximum values are the same as the limits for the integer data type. |
Return value |
Type |
Description |
<integer-result> |
Integer |
The integer version for the specified string. The minimum
and maximum values are the same as the limits for the integer data type. |
Example
This example creates an integer version for the string
"10":
int('10')
And returns this result: 10
- isFloat
Return a boolean indicating whether a string is a
floating-point number. By default, this function uses the invariant culture for
the floating-point format. To identify floating-point numbers represented in
other locale-specific formats, you can optionally specify an RFC 4646 locale
code.
isFloat('<string>', '<locale>'?)
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The string to examine |
<locale> |
No |
String |
The RFC 4646 locale code to use |
Return value |
Type |
Description |
<boolean-result> |
Boolean |
A boolean that indicates whether the string is a
floating-point number |
Example 1
This example checks whether a string is a floating-point
number in the invariant culture:
isFloat('10,000.00')
And returns this result: true
Example 2
This example checks whether a string is a floating-point
number in the German locale:
isFloat('10.000,00', 'de-DE')
And returns this result: true
- isInt
Return a boolean that indicates whether a string is an
integer.
isInt('<string>')
Parameter |
Required |
Type |
Description |
<string> |
Yes |
String |
The string to examine |
Return value |
Type |
Description |
<boolean-result> |
Boolean |
A boolean that indicates whether the string is an integer |
Example
This example checks whether a string is an integer:
isInt('10')
And returns this result: true
- item
When used inside a repeating action over an array, return
the current item in the array during the action's current iteration. You can
also get the values from that item's properties.
item()
Return value |
Type |
Description |
<current-array-item> |
Any |
The current item in the array for the action's current
iteration |
Example
This example gets the body element from the
current message for the "Send_an_email" action inside a for-each
loop's current iteration:
item().body
- items
Return the current item from each cycle in a for-each loop.
Use this function inside the for-each loop.
items('<loopName>')
Parameter |
Required |
Type |
Description |
<loopName> |
Yes |
String |
The name for the for-each loop |
Return value |
Type |
Description |
<item> |
Any |
The item from the current cycle in the specified for-each
loop |
Example
This example gets the current item from the specified
for-each loop:
items('myForEachLoopName')
Return the index value for the current iteration inside an
Until loop. You can use this function inside nested Until loops.
iterationIndexes('<loopName>')
Parameter |
Required |
Type |
Description |
<loopName> |
Yes |
String |
The name for the Until loop |
Return value |
Type |
Description |
<index> |
Integer |
The index value for the current iteration inside the
specified Until loop |
Example
This example creates a counter variable and increments that
variable by one during each iteration in an Until loop until the counter value
reaches five. The example also creates a variable that tracks the current index
for each iteration. During each iteration in the Until loop, the example
increments the counter value and then assigns the counter value to the current
index value and then increments the counter value. While in the loop, this
example references the current iteration index by using the iterationIndexes function:
iterationIndexes('Until_Max_Increment')
{
"actions":
{
"Create_counter_variable":
{
"type":
"InitializeVariable",
"inputs":
{
"variables":
[
{
"name":
"myCounter",
"type":
"Integer",
"value":
0
}
]
},
"runAfter":
{}
},
"Create_current_index_variable":
{
"type":
"InitializeVariable",
"inputs":
{
"variables":
[
{
"name":
"myCurrentLoopIndex",
"type":
"Integer",
"value":
0
}
]
},
"runAfter":
{
"Create_counter_variable":
[ "Succeeded" ]
}
},
"Until_Max_Increment":
{
"type":
"Until",
"actions":
{
"Assign_current_index_to_counter":
{
"type":
"SetVariable",
"inputs":
{
"name":
"myCurrentLoopIndex",
"value":
"@variables('myCounter')"
},
"runAfter":
{
"Increment_variable":
[ "Succeeded" ]
}
},
"Compose":
{
"inputs":
"'Current index: ' @{iterationIndexes('Until_Max_Increment')}",
"runAfter":
{
"Assign_current_index_to_counter":
[
"Succeeded"
]
},
"type":
"Compose"
},
"Increment_variable":
{
"type":
"IncrementVariable",
"inputs":
{
"name":
"myCounter",
"value":
1
},
"runAfter":
{}
}
},
"expression":
"@equals(variables('myCounter'), 5)",
"limit":
{
"count":
60,
"timeout":
"PT1H"
},
"runAfter":
{
"Create_current_index_variable":
[ "Succeeded" ]
}
}
}
}
J
Return the JavaScript Object Notation (JSON) type value,
object, or array of objects for a string or XML.
json('<value>')
json(xml('value'))
Important
Without an XML schema that defines the output's structure,
the function might return results where the structure greatly differs from the
expected format, depending on the input.
This behavior makes this function unsuitable for scenarios
where the output must conform to a well-defined contract, for example, in
critical business systems or solutions.
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String or XML |
The string or XML to convert |
Return value |
Type |
Description |
<JSON-result> |
JSON native type, object, or array |
The JSON native type value, object, or array of objects
from the input string or XML. |
Example 1
This example converts this string into a JSON value:
json('[1, 2, 3]')
And returns this result: [1, 2, 3]
Example 2
This example converts this string into JSON:
json('{"fullName": "Sophia Owen"}')
And returns this result:
{
"fullName":
"Sophia Owen"
}
Example 3
This example uses the json() and xml() functions
to convert XML that has a single child element in the root element into a JSON
object named person for that child element:
json(xml('<?xml version="1.0"?> <root>
<person id="1"> <name>Sophia Owen</name>
<occupation>Engineer</occupation> </person> </root>'))
And returns this result:
{
"?xml": {
"@version":
"1.0"
},
"root": {
"person":
{
"@id":
"1",
"name":
"Sophia Owen",
"occupation":
"Engineer"
}
}
}
Example 4
This example uses the json() and xml() functions
to convert XML that has multiple child elements in the root element into an
array named person that contains JSON objects for those child
elements:
json(xml('<?xml version="1.0"?> <root>
<person id="1"> <name>Sophia Owen</name>
<occupation>Engineer</occupation> </person> <person
id="2"> <name>John Doe</name>
<occupation>Engineer</occupation> </person> </root>'))
And returns this result:
{
"?xml": {
"@version":
"1.0"
},
"root": {
"person":
[
{
"@id":
"1",
"name":
"Sophia Owen",
"occupation":
"Engineer"
},
{
"@id":
"2",
"name":
"John Doe",
"occupation":
"Engineer"
}
]
}
}
- intersection
Return a collection that has only the
common items across the specified collections. To appear in the result, an item
must appear in all the collections passed to this function. If one or more
items have the same name, the last item with that name appears in the result.
intersection([<collection1>], [<collection2>],
...)
intersection('<collection1>', '<collection2>',
...)
Parameter |
Required |
Type |
Description |
<collection1>, <collection2>,
... |
Yes |
Array or Object, but not both |
The collections from where you want only the
common items |
Return value |
Type |
Description |
<common-items> |
Array or Object, respectively |
A collection that has only the common items across the
specified collections |
Example
This example finds the common items across these arrays:
intersection(createArray(1, 2, 3), createArray(101, 2, 1,
10), createArray(6, 8, 1, 2))
And returns an array with only these
items: [1, 2]
- join
Return a string that has all the items from an array and has
each character separated by a delimiter.
join([<collection>], '<delimiter>')
Parameter |
Required |
Type |
Description |
<collection> |
Yes |
Array |
The array that has the items to join |
<delimiter> |
Yes |
String |
The separator that appears between each character in the
resulting string |
Return value |
Type |
Description |
<char1><delimiter><char2><delimiter>... |
String |
The resulting string created from all the items in the
specified array. |
Example
This example creates a string from all the items in this
array with the specified character as the delimiter:
join(createArray('a', 'b', 'c'), '.')
And returns this result: "a.b.c"
L
Return the last item from a collection.
last('<collection>')
last([<collection>])
Parameter |
Required |
Type |
Description |
<collection> |
Yes |
String or Array |
The collection where to find the last item |
Example
These examples find the last item in these collections:
last('abcd')
last(createArray(0, 1, 2, 3))
And returns these results:
- First
example: "d"
- Second
example: 3
- lastIndexOf
Return the starting position or index value for the last
occurrence of a substring. This function isn't case-sensitive, and indexes
start with the number 0.
lastIndexOf('<text>', '<searchText>')
Parameter |
Required |
Type |
Description |
<text> |
Yes |
String |
The string that has the substring to find |
<searchText> |
Yes |
String |
The substring to find |
Return value |
Type |
Description |
<ending-index-value> |
Integer |
The starting position or index value for the last
occurrence of the specified substring. |
If the string or substring value is empty, the following
behavior occurs:
- If
only the string value is empty, the function returns -1.
- If
the string and substring values are both empty, the function returns 0.
- If
only the substring value is empty, the function returns the string length
minus 1.
Examples
This example finds the starting index value for the last
occurrence of the substring world substring in the string hello
world hello world. The returned result is 18:
lastIndexOf('hello world hello world', 'world')
This example is missing the substring parameter, and returns
a value of 22 because the value of the input string (23) minus 1 is
greater than 0.
lastIndexOf('hello world hello world', '')
- length
Return the number of items in a collection.
length('<collection>')
length([<collection>])
Parameter |
Required |
Type |
Description |
<collection> |
Yes |
String or Array |
The collection with the items to count |
Return value |
Type |
Description |
<length-or-count> |
Integer |
The number of items in the collection |
Example
These examples count the number of items in these
collections:
length('abcd')
length(createArray(0, 1, 2, 3))
And return this result: 4
Check whether the first value is less than the second value.
Return true when the first value is less, or return false when the first value
is more.
less(<value>, <compareTo>)
less('<value>', '<compareTo>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
Integer, Float, or String |
The first value to check whether less than the second
value |
<compareTo> |
Yes |
Integer, Float, or String, respectively |
The comparison item |
Return value |
Type |
Description |
true or false |
Boolean |
Return true when the first value is less than the second
value. Return false when the first value is equal to or greater than the
second value. |
Example
These examples check whether the first value is less than
the second value.
less(5, 10)
less('banana', 'apple')
And return these results:
- First
example: true
- Second
example: false
- lessOrEquals
Check whether the first value is less than or equal to the
second value. Return true when the first value is less than or equal, or return
false when the first value is more.
lessOrEquals(<value>, <compareTo>)
lessOrEquals('<value>', '<compareTo>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
Integer, Float, or String |
The first value to check whether less than or equal to the
second value |
<compareTo> |
Yes |
Integer, Float, or String, respectively |
The comparison item |
Return value |
Type |
Description |
true or false |
Boolean |
Return true when the first value is less than or equal to
the second value. Return false when the first value is greater than the
second value. |
Example
These examples check whether the first value is less or
equal than the second value.
lessOrEquals(10, 10)
lessOrEquals('apply', 'apple')
And return these results:
- First
example: true
- Second
example: false
- listCallbackUrl
Return the "callback URL" that calls a trigger or
action. This function works only with triggers and actions for the HttpWebhook and ApiConnectionWebhook connector
types, but not the Manual, Recurrence, HTTP,
and APIConnection types.
listCallbackUrl()
Return value |
Type |
Description |
<callback-URL> |
String |
The callback URL for a trigger or action |
Example
This example shows a sample callback URL that this function
might return:
"https://prod-01.westus.logic.azure.com:443/workflows/<*workflow-ID*>/triggers/manual/run?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=<*signature-ID*>"
M
Return the highest value from a list or array with numbers
that is inclusive at both ends.
max(<number1>, <number2>, ...)
max([<number1>, <number2>, ...])
Parameter |
Required |
Type |
Description |
<number1>, <number2>, ... |
Yes |
Integer, Float, or both |
The set of numbers from which you want the highest value |
[<number1>, <number2>, ...] |
Yes |
Array - Integer, Float, or both |
The array of numbers from which you want the highest value |
Example
These examples get the highest value from the set of numbers
and the array:
max(1, 2, 3)
max(createArray(1, 2, 3))
And return this result: 3
- min
Return the lowest value from a set of numbers or an array.
min(<number1>, <number2>, ...)
min([<number1>, <number2>, ...])
Parameter |
Required |
Type |
Description |
<number1>, <number2>, ... |
Yes |
Integer, Float, or both |
The set of numbers from which you want the lowest value |
[<number1>, <number2>, ...] |
Yes |
Array - Integer, Float, or both |
The array of numbers from which you want the lowest value |
Return value |
Type |
Description |
<min-value> |
Integer or Float |
The lowest value in the specified set of numbers or
specified array |
Example
These examples get the lowest value in the set of numbers
and the array:
min(1, 2, 3)
min(createArray(1, 2, 3))
And return this result: 1
- mod
Return the remainder from dividing two numbers.
mod(<dividend>, <divisor>)
Parameter |
Required |
Type |
Description |
<dividend> |
Yes |
Integer or Float |
The number to divide by the divisor |
<divisor> |
Yes |
Integer or Float |
The number that divides the dividend, but
can't be zero |
Return value |
Type |
Description |
<modulo-result> |
Integer or Float |
The remainder from dividing the first number by the second
number |
Example 1
This example divides the first number by the second number:
mod(3, 2)
And returns this result: 1
Example 2
This example shows that if one or both values are negative,
the result matches the sign of the dividend:
mod(-5, 2)
mod(4, -3)
The example returns these results:
- First
example: -1
- Second
example: 1
- mul
Return the product from multiplying two numbers.
mul(<multiplicand1>, <multiplicand2>)
Parameter |
Required |
Type |
Description |
<multiplicand1> |
Yes |
Integer or Float |
The number to multiply by multiplicand2 |
<multiplicand2> |
Yes |
Integer or Float |
The number that multiples multiplicand1 |
Return value |
Type |
Description |
<product-result> |
Integer or Float |
The product from multiplying the first number by the
second number |
Example
These examples multiple the first number by the second
number:
mul(1, 2)
mul(1.5, 2)
And return these results:
- First
example: 2
- Second
example 3
- multipartBody
Return the body for a specific part in an action's output
that has multiple parts.
multipartBody('<actionName>', <index>)
Parameter |
Required |
Type |
Description |
<actionName> |
Yes |
String |
The name for the action that has output with multiple
parts |
<index> |
Yes |
Integer |
The index value for the part that you want |
Return value |
Type |
Description |
<body> |
String |
The body for the specified part |
N
Check whether an expression is false. Return true when the
expression is false, or return false when true.
not(<expression>)
Parameter |
Required |
Type |
Description |
<expression> |
Yes |
Boolean |
The expression to check |
Return value |
Type |
Description |
true or false |
Boolean |
Return true when the expression is false. Return false
when the expression is true. |
Example 1
These examples check whether the specified expressions are
false:
not(false)
not(true)
And return these results:
- First
example: The expression is false, so the function returns true.
- Second
example: The expression is true, so the function returns false.
Example 2
These examples check whether the specified expressions are
false:
not(equals(1, 2))
not(equals(1, 1))
And return these results:
- First
example: The expression is false, so the function returns true.
- Second
example: The expression is true, so the function returns false.
- nthIndexOf
Return the starting position or index value where the nth
occurrence of a substring appears in a string.
nthIndexOf('<text>', '<searchText>',
<occurrence>)
Parameter |
Required |
Type |
Description |
<text> |
Yes |
String |
The string that contains the substring to find |
<searchText> |
Yes |
String |
The substring to find |
<occurrence> |
Yes |
Integer |
A number that specifies the nth occurrence of
the substring to find. If occurrence is negative, start
searching from the end. |
Return value |
Type |
Description |
<index-value> |
Integer |
The starting position or index value for the nth
occurrence of the specified substring. If the substring isn't found or fewer
than n occurrences of the substring exist, return -1. |
Examples
nthIndexOf('123456789123465789', '1', 1) // Returns `0`.
nthIndexOf('123456789123465789', '1', 2) // Returns `9`.
nthIndexOf('123456789123465789', '12', 2) // Returns `9`.
nthIndexOf('123456789123465789', '6', 4) // Returns `-1`.
O
Check whether at least one expression is true. Return true
when at least one expression is true, or return false when all are false.
or(<expression1>, <expression2>, ...)
Parameter |
Required |
Type |
Description |
<expression1>, <expression2>,
... |
Yes |
Boolean |
The expressions to check |
Return value |
Type |
Description |
true or false |
Boolean |
Return true when at least one expression is true. Return
false when all expressions are false. |
Example 1
These examples check whether at least one expression is
true:
or(true, false)
or(false, false)
And return these results:
- First
example: At least one expression is true, so the function returns true.
- Second
example: Both expressions are false, so the function returns false.
Example 2
These examples check whether at least one expression is
true:
or(equals(1, 1), equals(1, 2))
or(equals(1, 2), equals(1, 3))
And return these results:
- First
example: At least one expression is true, so the function returns true.
- Second
example: Both expressions are false, so the function returns false.
- outputs
Return an action's outputs at runtime. Use this function,
rather than actionOutputs(), which resolves to outputs() in the
designer. Although both functions work the same way, outputs() is
preferred.
outputs('<actionName>')
Parameter |
Required |
Type |
Description |
<actionName> |
Yes |
String |
The name for the action's output that you want |
Return value |
Type |
Description |
<output> |
String |
The output from the specified action |
Example
This example gets the output from the Twitter action Get
user:
outputs('Get_user')
And returns this result:
{
"statusCode":
200,
"headers":
{
"Pragma":
"no-cache",
"Vary": "Accept-Encoding",
"x-ms-request-id":
"a916ec8f52211265d98159adde2efe0b",
"X-Content-Type-Options":
"nosniff",
"Timing-Allow-Origin":
"*",
"Cache-Control":
"no-cache",
"Date": "Mon,
09 Apr 2018 18:47:12 GMT",
"Set-Cookie":
"ARRAffinity=b9400932367ab5e3b6802e3d6158afffb12fcde8666715f5a5fbd4142d0f0b7d;Path=/;HttpOnly;Domain=twitter-wus.azconn-wus.p.azurewebsites.net",
"X-AspNet-Version":
"4.0.30319",
"X-Powered-By":
"ASP.NET",
"Content-Type":
"application/json; charset=utf-8",
"Expires":
"-1",
"Content-Length":
"339"
},
"body": {
"FullName":
"Contoso Corporation",
"Location":
"Generic Town, USA",
"Id": 283541717,
"UserName":
"ContosoInc",
"FollowersCount":
172,
"Description":
"Leading the way in transforming the digital workplace.",
"StatusesCount":
93,
"FriendsCount":
126,
"FavouritesCount":
46,
"ProfileImageUrl":
"https://pbs.twimg.com/profile_images/908820389907722240/gG9zaHcd_400x400.jpg"
}
}
P
Return the value for a parameter that is described in your
workflow definition.
parameters('<parameterName>')
Parameter |
Required |
Type |
Description |
<parameterName> |
Yes |
String |
The name for the parameter whose value you want |
Return value |
Type |
Description |
<parameter-value> |
Any |
The value for the specified parameter |
Example
Suppose that you have this JSON value:
{
"fullName":
"Sophia Owen"
}
This example gets the value for the specified parameter:
parameters('fullName')
And returns this result: "Sophia Owen"
- parseDateTime
Return the timestamp from a string that contains a
timestamp.
parseDateTime('<timestamp>', '<locale>'?,
'<format>'?)
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
<locale> |
No |
String |
The locale to use. |
<format> |
No |
String |
A numeric format string that is either a single
format specifier or a custom
format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK),
which complies with ISO
8601 and preserves time zone information. If the format isn't
specified, attempt parsing with multiple formats that are compatible with the
provided locale. If the format isn't a valid value, an error is generated. |
Return value |
Type |
Description |
<parsed-timestamp> |
String |
The parsed timestamp in "o" (yyyy-MM-ddTHH:mm:ss.fffffffK)
format, which complies with ISO 8601 and preserves
time zone information. |
Examples
parseDateTime('20/10/2014', 'fr-fr') // Returns
'2014-10-20T00:00:00.0000000'.
parseDateTime('20 octobre 2010', 'fr-FR') // Returns
'2010-10-20T00:00:00.0000000'.
parseDateTime('martes 20 octubre 2020', 'es-es') // Returns
'2020-10-20T00:00:00.0000000'.
parseDateTime('21052019', 'fr-fr', 'ddMMyyyy') // Returns
'2019-05-21T00:00:00.0000000'.
parseDateTime('10/20/2014 15h', 'en-US', 'MM/dd/yyyy HH\h')
// Returns '2014-10-20T15:00:00.0000000'.
R
Return a random integer from a specified range, which is
inclusive only at the starting end.
rand(<minValue>, <maxValue>)
Parameter |
Required |
Type |
Description |
<minValue> |
Yes |
Integer |
The lowest integer in the range |
<maxValue> |
Yes |
Integer |
The integer that follows the highest integer in the range
that the function can return |
Return value |
Type |
Description |
<random-result> |
Integer |
The random integer returned from the specified range |
Example
This example gets a random integer from the specified range,
excluding the maximum value:
rand(1, 5)
And returns one of these numbers as the result: 1, 2, 3,
or 4
- range
Return an integer array that starts from a specified
integer.
range(<startIndex>, <count>)
Parameter |
Required |
Type |
Description |
<startIndex> |
Yes |
Integer |
An integer value that starts the array as the first item |
<count> |
Yes |
Integer |
The number of integers in the array. The count parameter
value must be a positive integer that doesn't exceed 100,000. |
Return value |
Type |
Description |
[<range-result>] |
Array |
The array with integers starting from the specified index |
Example
This example creates an integer array that starts from the
specified index and has the specified number of integers:
range(1, 4)
And returns this result: [1, 2, 3, 4]
- removeProperty
Remove a property from an object and return the updated
object. If the property that you try to remove doesn't exist, the function
returns the original object.
removeProperty(<object>, '<property>')
Parameter |
Required |
Type |
Description |
<object> |
Yes |
Object |
The JSON object from where you want to remove a property |
<property> |
Yes |
String |
The name for the property to remove |
Return value |
Type |
Description |
<updated-object> |
Object |
The updated JSON object without the specified property |
To remove a child property from an existing property, use
this syntax:
removeProperty(<object>['<parent-property>'],
'<child-property>')
Parameter |
Required |
Type |
Description |
<object> |
Yes |
Object |
The JSON object whose property you want to remove |
<parent-property> |
Yes |
String |
The name for parent property with the child property that
you want to remove |
<child-property> |
Yes |
String |
The name for the child property to remove |
Return value |
Type |
Description |
<updated-object> |
Object |
The updated JSON object whose child property that you
removed |
Example 1
This example removes the middleName property from a JSON object, which is converted from a string to JSON by using the JSON() function, and returns the updated object:
removeProperty(json('{ "firstName":
"Sophia", "middleName": "Anne",
"surName": "Owen" }'), 'middleName')
Here's the current JSON object:
{
"firstName":
"Sophia",
"middleName":
"Anne",
"surName":
"Owen"
}
Here's the updated JSON object:
{
"firstName":
"Sophia",
"surName":
"Owen"
}
Example 2
This example removes the middleName child property from a customerName parent property in a JSON object, which is converted from a string to JSON by using the JSON() function, and returns the updated object:
removeProperty(json('{ "customerName": {
"firstName": "Sophia", "middleName":
"Anne", "surName": "Owen" } }')['customerName'],
'middleName')
Here's the current JSON object:
{
"customerName":
{
"firstName":
"Sophia",
"middleName":
"Anne",
"surName":
"Owen"
}
}
Here's the updated JSON object:
{
"customerName":
{
"firstName":
"Sophia",
"surName":
"Owen"
}
}
- replace
Replace a substring with the specified string, and return
the result string. This function is case-sensitive.
replace('<text>', '<oldText>',
'<newText>')
Parameter |
Required |
Type |
Description |
<text> |
Yes |
String |
The string that has the substring to replace |
<oldText> |
Yes |
String |
The substring to replace |
<newText> |
Yes |
String |
The replacement string |
Return value |
Type |
Description |
<updated-text> |
String |
The updated string after replacing the substring |
Example
This example finds the "old" substring in
"the old string" and replaces "old" with "new":
replace('the old string', 'old', 'new')
And returns this result: "the new string"
Return the results from the top-level actions in the
specified scoped action, such as a For_each, Until, or Scope action.
The result() function accepts a single parameter, which is the
scope's name, and returns an array that contains information from the
first-level actions in that scope. These action objects include the same
attributes as the attributes returned by the actions() function, such
as the action's start time, end time, status, inputs, correlation IDs, and
outputs.
Note
This function returns information only from
the first-level actions in the scoped action and not from deeper nested actions
such as switch or condition actions.
For example, you can use this function to get the results
from failed actions so that you can diagnose and handle exceptions.
result('<scopedActionName>')
Parameter |
Required |
Type |
Description |
<scopedActionName> |
Yes |
String |
The name of the scoped action where you want the inputs
and outputs from the top-level actions inside that scope |
Return value |
Type |
Description |
<array-object> |
Array object |
An array that contains arrays of inputs and outputs from
each top-level action inside the specified scope |
Example
This example returns the inputs and outputs from each
iteration of an HTTP action inside that's in a For_each loop by using
the result() function in the Compose action:
{
"actions":
{
"Compose":
{
"inputs":
"@result('For_each')",
"runAfter":
{
"For_each":
[
"Succeeded"
]
},
"type":
"compose"
},
"For_each":
{
"actions":
{
"HTTP":
{
"inputs":
{
"method":
"GET",
"uri":
"https://httpstat.us/200"
},
"runAfter":
{},
"type":
"Http"
}
},
"foreach":
"@triggerBody()",
"runAfter":
{},
"type":
"Foreach"
}
}
}
Here's how the example returned array might look where the
outer outputs object contains the inputs and outputs from each
iteration of the actions inside the For_each action.
[
{
"name":
"HTTP",
"outputs":
[
{
"name":
"HTTP",
"inputs":
{
"uri":
"https://httpstat.us/200",
"method":
"GET"
},
"outputs":
{
"statusCode":
200,
"headers":
{
"X-AspNetMvc-Version":
"5.1",
"Access-Control-Allow-Origin":
"*",
"Cache-Control":
"private",
"Date":
"Tue, 20 Aug 2019 22:15:37 GMT",
"Set-Cookie":
"ARRAffinity=0285cfbea9f2ee7",
"Server":
"Microsoft-IIS/10.0",
"X-AspNet-Version":
"4.0.30319",
"X-Powered-By":
"ASP.NET",
"Content-Length":
"0"
},
"startTime":
"2019-08-20T22:15:37.6919631Z",
"endTime":
"2019-08-20T22:15:37.95762Z",
"trackingId":
"6bad3015-0444-4ccd-a971-cbb0c99a7.....",
"clientTrackingId":
"085863526764.....",
"code":
"OK",
"status":
"Succeeded"
}
},
{
"name":
"HTTP",
"inputs":
{
"uri":
"https://httpstat.us/200",
"method":
"GET"
},
"outputs":
{
"statusCode":
200,
"headers":
{
"X-AspNetMvc-Version":
"5.1",
"Access-Control-Allow-Origin":
"*",
"Cache-Control":
"private",
"Date":
"Tue, 20 Aug 2019 22:15:37 GMT",
"Set-Cookie":
"ARRAffinity=0285cfbea9f2ee7",
"Server":
"Microsoft-IIS/10.0",
"X-AspNet-Version":
"4.0.30319",
"X-Powered-By":
"ASP.NET",
"Content-Length":
"0"
},
"startTime":
"2019-08-20T22:15:37.6919631Z",
"endTime":
"2019-08-20T22:15:37.95762Z",
"trackingId":
"9987e889-981b-41c5-aa27-f3e0e59bf69.....",
"clientTrackingId":
"085863526764.....",
"code":
"OK",
"status":
"Succeeded"
}
}
]
}
]
- reverse
Reverse the order of items in a collection. When you use this function with sort(), you can sort a collection in descending order.
reverse([<collection>])
Parameter |
Required |
Type |
Description |
<collection> |
Yes |
Array |
The collection to reverse |
Return value |
Type |
Description |
[<updated-collection>] |
Array |
The reversed collection |
Example
This example reverses an array of integers:
reverse(createArray(0, 1, 2, 3))
And returns this array: [3,2,1,0]
S
Set the value for JSON object's property and return the updated object. If the property that you try to set doesn't exist, the property gets added to the object. To add a new property, use the addProperty() function.
setProperty(<object>, '<property>',
<value>)
Parameter |
Required |
Type |
Description |
<object> |
Yes |
Object |
The JSON object whose property you want to set |
<property> |
Yes |
String |
The name for the existing or new property to set |
<value> |
Yes |
Any |
The value to set for the specified property |
To set the child property in a child object, use a
nested setProperty() call instead. Otherwise, the function returns
only the child object as output.
setProperty(<object>, '<parent-property>',
setProperty(<object>['parentProperty'], '<child-property>',
<value>))
Parameter |
Required |
Type |
Description |
<object> |
Yes |
Object |
The JSON object whose property you want to set |
<parent-property> |
Yes |
String |
The name for parent property with the child property that
you want to set |
<child-property> |
Yes |
String |
The name for the child property to set |
<value> |
Yes |
Any |
The value to set for the specified property |
Return value |
Type |
Description |
<updated-object> |
Object |
The updated JSON object whose property you set |
Example 1
This example sets the surName property in a JSON object, which is converted from a string to JSON by using the JSON() function. The function assigns the specified value to the property and returns the updated object:
setProperty(json('{ "firstName":
"Sophia", "surName": "Owen" }'), 'surName',
'Hartnett')
Here's the current JSON object:
{
"firstName":
"Sophia",
"surName":
"Owen"
}
Here's the updated JSON object:
{
"firstName":
"Sophia",
"surName":
"Hartnett"
}
Example 2
This example sets the surName child property for the customerName parent property in a JSON object, which is converted from a string to JSON by using the JSON() function. The function assigns the specified value to the property and returns the updated object:
setProperty(json('{ "customerName": {
"firstName": "Sophia", "surName":
"Owen" } }'), 'customerName', setProperty(json('{
"customerName": { "firstName": "Sophia",
"surName": "Owen" } }')['customerName'], 'surName',
'Hartnett'))
Here's the current JSON object:
{
"customerName":
{
"firstName":
"Sophie",
"surName":
"Owen"
}
}
Here's the updated JSON object:
{
"customerName":
{
"firstName":
"Sophie",
"surName":
"Hartnett"
}
}
- skip
Remove items from the front of a collection, and
return all the other items.
skip([<collection>], <count>)
Parameter |
Required |
Type |
Description |
<collection> |
Yes |
Array |
The collection whose items you want to remove |
<count> |
Yes |
Integer |
A positive integer for the number of items to remove at
the front |
Return value |
Type |
Description |
[<updated-collection>] |
Array |
The updated collection after removing the specified items |
Example
This example removes one item, the number 0, from the front
of the specified array:
skip(createArray(0, 1, 2, 3), 1)
And returns this array with the remaining items: [1,2,3]
- slice
Return a substring by specifying the starting and ending
position or value.
slice('<text>', <startIndex>, <endIndex>?)
Parameter |
Required |
Type |
Description |
<text> |
Yes |
String |
The string that contains the substring to find |
<startIndex> |
Yes |
Integer |
The zero-based starting position or value for where to
begin searching for the substring |
<endIndex> |
No |
Integer |
The zero-based ending position or value for where to end
searching for the substring. The character located at the ending index value
isn't included in the search. |
Return value |
Type |
Description |
<slice-result> |
String |
A new string that contains the found substring |
Examples
slice('Hello World', 2) // Returns 'llo World'.
slice('Hello World', 30) // Returns ''.
slice('Hello World', 10, 2) // Returns ''.
slice('Hello World', 0) // Returns 'Hello World'.
slice('Hello World', 2, 5) // Returns 'llo'.
slice('Hello World', 6, 20) // Returns 'World'.
slice('Hello World', -2) // Returns 'ld'.
slice('Hello World', 3, -1) // Returns 'lo Worl'.
slice('Hello World', 3, 3) // Returns ''.
- sort
Sort items in a collection. You can sort the collection
objects using any key that contains a simple type.
sort([<collection>], <sortBy>?)
Parameter |
Required |
Type |
Description |
<collection> |
Yes |
Array |
The collection with the items to sort |
<sortBy> |
No |
String |
The key to use for sorting the collection objects |
Return value |
Type |
Description |
[<updated-collection>] |
Array |
The sorted collection |
Example 1
This example sorts an array of integers:
sort(createArray(2, 1, 0, 3))
And returns this array: [0,1,2,3]
Example 2
This example sorts an array of objects by key:
sort(createArray(json('{ "first":
"Amalie", "last": "Rose" }'), json('{
"first": "Elise", "last": "Renee" }')),
'last')
And returns this array: [{ "first":
"Elise", "last": "Renee" }, {"first":
"Amalie", "last": "Rose" }')]
- split
Return an array that contains substrings, separated by
commas, based on the specified delimiter character in the original string.
split('<text>', '<delimiter>')
Parameter |
Required |
Type |
Description |
<text> |
Yes |
String |
The string to separate into substrings based on the
specified delimiter in the original string |
<delimiter> |
Yes |
String |
The character in the original string to use as the
delimiter |
Return value |
Type |
Description |
[<substring1>,<substring2>,...] |
Array |
An array that contains substrings from the original
string, separated by commas |
Example 1
This example creates an array with substrings from the
specified string based on the specified character as the delimiter:
split('a_b_c', '_')
And returns this array as the result: ["a","b","c"]
Example 2
This example creates an array with a single element when no
delimiter exists in the string:
split('a_b_c', ' ')
And returns this array as the result: ["a_b_c"]
- startOfDay
Return the start of the day for a timestamp.
startOfDay('<timestamp>', '<format>'?)
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
<format> |
No |
String |
A numeric format string that is either a single
format specifier or a custom
format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK),
which complies with ISO
8601 and preserves time zone information. |
Return value |
Type |
Description |
<updated-timestamp> |
String |
The specified timestamp but starting at the zero-hour mark
for the day |
Example
This example finds the start of the day for this timestamp:
startOfDay('2018-03-15T13:30:30Z')
And returns this result: "2018-03-15T00:00:00.0000000Z"
- startOfHour
Return the start of the hour for a timestamp.
startOfHour('<timestamp>', '<format>'?)
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
<format> |
No |
String |
A numeric format string that is either a single
format specifier or a custom
format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK),
which complies with ISO
8601 and preserves time zone information. |
Return value |
Type |
Description |
<updated-timestamp> |
String |
The specified timestamp but starting at the zero-minute
mark for the hour |
Example
This example finds the start of the hour for this timestamp:
startOfHour('2018-03-15T13:30:30Z')
And returns this result: "2018-03-15T13:00:00.0000000Z"
- startOfMonth
Return the start of the month for a timestamp.
startOfMonth('<timestamp>', '<format>'?)
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
<format> |
No |
String |
A numeric format string that is either a single
format specifier or a custom
format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK),
which complies with ISO
8601 and preserves time zone information. |
Return value |
Type |
Description |
<updated-timestamp> |
String |
The specified timestamp but starting on the first day of
the month at the zero-hour mark |
Example 1
This example returns the start of the month for this
timestamp:
startOfMonth('2018-03-15T13:30:30Z')
And returns this result: "2018-03-01T00:00:00.0000000Z"
Example 2
This example returns the start of the month in the specified
format for this timestamp:
startOfMonth('2018-03-15T13:30:30Z', 'yyyy-MM-dd')
And returns this result: "2018-03-01"
- startsWith
Check whether a string starts with a specific substring.
Return true when the substring is found, or return false when not found. This
function isn't case-sensitive.
startsWith('<text>', '<searchText>')
Parameter |
Required |
Type |
Description |
<text> |
Yes |
String |
The string to check |
<searchText> |
Yes |
String |
The starting string to find |
Return value |
Type |
Description |
true or false |
Boolean |
Return true when the starting substring is found. Return
false when not found. |
Example 1
This example checks whether the "hello world"
string starts with the "hello" substring:
startsWith('hello world', 'hello')
And returns this result: true
Example 2
This example checks whether the "hello world"
string starts with the "greetings" substring:
startsWith('hello world', 'greetings')
And returns this result: false
- string
Return the string version for a value.
string(<value>)
Parameter |
Required |
Type |
Description |
<value> |
Yes |
Any |
The value to convert. If this value is null or evaluates
to null, the value is converted to an empty string ("") value. |
Return value |
Type |
Description |
<string-value> |
String |
The string version for the specified value. If the value parameter
is null or evaluates to null, this value is returned as an empty string ("")
value. |
Example 1
This example creates the string version for this number:
string(10)
And returns this result: "10"
Example 2
This example creates a string for the specified JSON object
and uses the backslash character (\) as an escape character for the
double-quotation mark (").
string( { "name": "Sophie Owen" } )
And returns this result: "{ \\"name\\":
\\"Sophie Owen\\" }"
- sub
Return the result from subtracting the second number from
the first number.
sub(<minuend>, <subtrahend>)
Parameter |
Required |
Type |
Description |
<minuend> |
Yes |
Integer or Float |
The number from which to subtract the subtrahend |
<subtrahend> |
Yes |
Integer or Float |
The number to subtract from the minuend |
Return value |
Type |
Description |
<result> |
Integer or Float |
The result from subtracting the second number from the
first number |
Example
This example subtracts the second number from the first
number:
sub(10.3, .3)
And returns this result: 10
- substring
Return characters from a string, starting from the specified position, or index. Index values start with the number 0. See also slice().
substring('<text>', <startIndex>,
<length>)
Parameter |
Required |
Type |
Description |
<text> |
Yes |
String |
The string whose characters you want |
<startIndex> |
Yes |
Integer |
A positive number equal to or greater than 0 that you want
to use as the starting position or index value |
<length> |
No |
Integer |
A positive number of characters that you want in the
substring |
Note
Make sure that the sum from adding the startIndex and length parameter
values is less than the length of the string that you provide for the text parameter.
Otherwise, you get an error, unlike similar functions in other languages where
the result is the substring from the startIndex to the end of
the string. The length parameter is optional and if not
provided, the substring() function takes all the characters
beginning from startIndex to the end of the string.
Return value |
Type |
Description |
<substring-result> |
String |
A substring with the specified number of characters,
starting at the specified index position in the source string |
Example
This example creates a five-character substring from the
specified string, starting from the index value 6:
substring('hello world', 6, 5)
And returns this result: "world"
- subtractFromTime
Subtract a number of time units from a timestamp. See also getPastTime.
subtractFromTime('<timestamp>', <interval>,
'<timeUnit>', '<format>'?)
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string that contains the timestamp |
<interval> |
Yes |
Integer |
The number of specified time units to subtract |
<timeUnit> |
Yes |
String |
The unit of time to use with interval:
"Second", "Minute", "Hour", "Day",
"Week", "Month", "Year" |
<format> |
No |
String |
A numeric format string that is either a single
format specifier or a custom
format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK),
which complies with ISO
8601 and preserves time zone information. |
Return value |
Type |
Description |
<updated-timestamp> |
String |
The timestamp minus the specified number of time units |
Example 1
This example subtracts one day from this timestamp:
subtractFromTime('2018-01-02T00:00:00Z', 1, 'Day')
And returns this result: "2018-01-01T00:00:00.0000000Z"
Example 2
This example subtracts one day from this timestamp:
subtractFromTime('2018-01-02T00:00:00Z', 1, 'Day', 'D')
And returns this result using the optional "D"
format: "Monday, January, 1, 2018"
T
Return items from the front of a collection.
take('<collection>', <count>)
take([<collection>], <count>)
Parameter |
Required |
Type |
Description |
<collection> |
Yes |
String or Array |
The collection whose items you want |
<count> |
Yes |
Integer |
A positive integer for the number of items that you want
from the front |
Return value |
Type |
Description |
<subset> or [<subset>] |
String or Array, respectively |
A string or array that has the specified number of items
taken from the front of the original collection |
Example
These examples get the specified number of items from the
front of these collections:
take('abcde', 3)
take(createArray(0, 1, 2, 3, 4), 3)
And return these results:
- First
example: "abc"
- Second
example: [0, 1, 2]
- ticks
Returns the number of ticks, which are 100-nanosecond
intervals, since January 1, 0001 12:00:00 midnight (or DateTime.Ticks in C#) up
to the specified timestamp.
ticks('<timestamp>')
Parameter |
Required |
Type |
Description |
<timestamp> |
Yes |
String |
The string for a timestamp |
Return value |
Type |
Description |
<ticks-number> |
Integer |
The number of ticks since the specified timestamp |
- toLower
Return a string in lowercase format. If a character in the
string doesn't have a lowercase version, that character stays unchanged in the
returned string.
toLower('<text>')
Parameter |
Required |
Type |
Description |
<text> |
Yes |
String |
The string to return in lowercase format |
Return value |
Type |
Description |
<lowercase-text> |
String |
The original string in lowercase format |
Example
This example converts this string to lowercase:
toLower('Hello World')
And returns this result: "hello world"
- toUpper
Return a string in uppercase format. If a character in the
string doesn't have an uppercase version, that character stays unchanged in the
returned string.
toUpper('<text>')
Parameter |
Required |
Type |
Description |
<text> |
Yes |
String |
The string to return in uppercase format |
Return value |
Type |
Description |
<uppercase-text> |
String |
The original string in uppercase format |
Example
This example converts this string to uppercase:
toUpper('Hello World')
And returns this result: "HELLO WORLD"
- trigger
Return a trigger's output at runtime, or values from other
JSON name-and-value pairs, which you can assign to an expression.
- Inside
a trigger's inputs, this function returns the output from the previous
execution.
- Inside
a trigger's condition, this function returns the output from the current
execution.
By default, the function references the entire trigger object, but you can optionally specify a property whose value that you want. Also, this function has shorthand versions available, see triggerOutputs() and triggerBody().
trigger()
Return value |
Type |
Description |
<trigger-output> |
String |
The output from a trigger at runtime |
- triggerBody
Return a trigger's body output at runtime. Shorthand for trigger().outputs.body. See trigger().
triggerBody()
Return value |
Type |
Description |
<trigger-body-output> |
String |
The body output from the trigger |
- triggerFormDataMultiValues
Return an array with values that match a key name in a
trigger's form-data or form-encoded output.
triggerFormDataMultiValues('<key>')
Parameter |
Required |
Type |
Description |
<key> |
Yes |
String |
The name for the key whose value you want |
Return value |
Type |
Description |
[<array-with-key-values>] |
Array |
An array with all the values that match the specified key |
Example
This example creates an array from the "feedUrl"
key value in an RSS trigger's form-data or form-encoded output:
triggerFormDataMultiValues('feedUrl')
And returns this array as an example result: ["https://feeds.a.dj.com/rss/RSSMarketsMain.xml"]
- triggerFormDataValue
Return a string with a single value that matches a key name
in a trigger's form-data or form-encoded output.
If the function finds more than one match, the function throws an error.
triggerFormDataValue('<key>')
Parameter |
Required |
Type |
Description |
<key> |
Yes |
String |
The name for the key whose value you want |
Return value |
Type |
Description |
<key-value> |
String |
The value in the specified key |
Example
This example creates a string from the "feedUrl"
key value in an RSS trigger's form-data or form-encoded output:
triggerFormDataValue('feedUrl')
And returns this string as an example result: "https://feeds.a.dj.com/rss/RSSMarketsMain.xml"
- triggerMultipartBody
Return the body for a specific part in a trigger's output
that has multiple parts.
triggerMultipartBody(<index>)
Parameter |
Required |
Type |
Description |
<index> |
Yes |
Integer |
The index value for the part that you want |
Return value |
Type |
Description |
<body> |
String |
The body for the specified part in a trigger's multipart
output |
- triggerOutputs
Return a trigger's output at runtime, or values from other JSON name-and-value pairs. Shorthand for trigger().outputs.
triggerOutputs()
Return value |
Type |
Description |
<trigger-output> |
String |
The output from a trigger at runtime |
- trim
Remove leading and trailing whitespace from a string, and
return the updated string.
trim('<text>')
Parameter |
Required |
Type |
Description |
<text> |
Yes |
String |
The string that has the leading and trailing whitespace to
remove |
Return value |
Type |
Description |
<updatedText> |
String |
An updated version for the original string without leading
or trailing whitespace |
Example
This example removes the leading and trailing whitespace
from the string " Hello World ":
trim(' Hello World ')
And returns this result: "Hello World"
U
Return a collection that has all the items
from the specified collections. To appear in the result, an item can appear in
any collection passed to this function. If one or more items have the same
name, the last item with that name appears in the result.
union('<collection1>', '<collection2>', ...)
union([<collection1>], [<collection2>], ...)
Parameter |
Required |
Type |
Description |
<collection1>, <collection2>,
... |
Yes |
Array or Object, but not both |
The collections from where you want all the
items |
Return value |
Type |
Description |
<updatedCollection> |
Array or Object, respectively |
A collection with all the items from the specified
collections - no duplicates |
Example
This example gets all the items from these
collections:
union(createArray(1, 2, 3), createArray(1, 2, 10, 101))
And returns this result: [1, 2, 3, 10, 101]
- uriComponent
Return a uniform resource identifier (URI) encoded version for a string by replacing URL-unsafe characters with escape characters. Use this function rather than encodeUriComponent(). Although both functions work the same way, uriComponent() is preferred.
uriComponent('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The string to convert to URI-encoded format |
Return value |
Type |
Description |
<encoded-uri> |
String |
The URI-encoded string with escape characters |
Example
This example creates a URI-encoded version for this string:
uriComponent('https://contoso.com')
And returns this result: "https%3A%2F%2Fcontoso.com"
- uriComponentToBinary
Return the binary version for a uniform resource identifier
(URI) component.
uriComponentToBinary('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The URI-encoded string to convert |
Return value |
Type |
Description |
<binary-for-encoded-uri> |
String |
The binary version for the URI-encoded string. The binary
content is base64-encoded and represented by $content. |
Example
This example creates the binary version for this URI-encoded
string:
uriComponentToBinary('https%3A%2F%2Fcontoso.com')
And returns this result:
"001000100110100001110100011101000111000000100101001100
11010000010010010100110010010001100010010100110010010001
10011000110110111101101110011101000110111101110011011011
110010111001100011011011110110110100100010"
- uriComponentToString
Return the string version for a uniform resource identifier
(URI) encoded string, effectively decoding the URI-encoded string.
uriComponentToString('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The URI-encoded string to decode |
Return value |
Type |
Description |
<decoded-uri> |
String |
The decoded version for the URI-encoded string |
Example
This example creates the decoded string version for this
URI-encoded string:
uriComponentToString('https%3A%2F%2Fcontoso.com')
And returns this result: "https://contoso.com"
- uriHost
Return the host value for a uniform resource
identifier (URI).
uriHost('<uri>')
Parameter |
Required |
Type |
Description |
<uri> |
Yes |
String |
The URI whose host value you want |
Return value |
Type |
Description |
<host-value> |
String |
The host value for the specified URI |
Example
This example finds the host value for this URI:
uriHost('https://www.localhost.com:8080')
And returns this result: "www.localhost.com"
- uriPath
Return the path value for a uniform resource
identifier (URI).
uriPath('<uri>')
Parameter |
Required |
Type |
Description |
<uri> |
Yes |
String |
The URI whose path value you want |
Return value |
Type |
Description |
<path-value> |
String |
The path value for the specified URI. If path doesn't
have a value, return the "/" character. |
Example
This example finds the path value for this URI:
uriPath('https://www.contoso.com/catalog/shownew.htm?date=today')
And returns this result: "/catalog/shownew.htm"
- uriPathAndQuery
Return the path and query values for a
uniform resource identifier (URI).
uriPathAndQuery('<uri>')
Parameter |
Required |
Type |
Description |
<uri> |
Yes |
String |
The URI whose path and query values
you want |
Return value |
Type |
Description |
<path-query-value> |
String |
The path and query values for the
specified URI. If path doesn't specify a value, return the
"/" character. |
Example
This example finds the path and query values
for this URI:
uriPathAndQuery('https://www.contoso.com/catalog/shownew.htm?date=today')
And returns this result: "/catalog/shownew.htm?date=today"
- uriPort
Return the port value for a uniform resource
identifier (URI).
uriPort('<uri>')
Parameter |
Required |
Type |
Description |
<uri> |
Yes |
String |
The URI whose port value you want |
Return value |
Type |
Description |
<port-value> |
Integer |
The port value for the specified URI. If port doesn't
specify a value, return the default port for the protocol. |
Example
This example returns the port value for this URI:
uriPort('https://www.localhost:8080')
And returns this result: 8080
- uriQuery
Return the query value for a uniform resource
identifier (URI).
uriQuery('<uri>')
Parameter |
Required |
Type |
Description |
<uri> |
Yes |
String |
The URI whose query value you want |
Return value |
Type |
Description |
<query-value> |
String |
The query value for the specified URI |
Example
This example returns the query value for this URI:
uriQuery('https://www.contoso.com/catalog/shownew.htm?date=today')
And returns this result: "?date=today"
- uriScheme
Return the scheme value for a uniform resource
identifier (URI).
uriScheme('<uri>')
Parameter |
Required |
Type |
Description |
<uri> |
Yes |
String |
The URI whose scheme value you want |
Return value |
Type |
Description |
<scheme-value> |
String |
The scheme value for the specified URI |
Example
This example returns the scheme value for this
URI:
uriScheme('https://www.contoso.com/catalog/shownew.htm?date=today')
And returns this result: "http"
- utcNow
Return the current timestamp.
utcNow('<format>')
Optionally, you can specify a different format with the <format>
parameter.
Parameter |
Required |
Type |
Description |
<format> |
No |
String |
A numeric format string that is either a single format specifier or a custom format pattern. The default format for the timestamp is "o" (yyyy-MM-ddTHH:mm:ss.fffffffK), which complies with ISO 8601 and preserves time zone information. If the format isn't a valid value, an error is generated. |
Return value |
Type |
Description |
<current-timestamp> |
String |
The current date and time |
Example 1
Suppose today is April 15, 2018 at 1:00:00 PM. This example
gets the current timestamp:
utcNow()
And returns this result: "2018-04-15T13:00:00.0000000Z"
Example 2
Suppose today is April 15, 2018 at 1:00:00 PM. This example
gets the current timestamp using the optional "D" format:
utcNow('D')
And returns this result: "Sunday, April 15,
2018"
V
Return the value for a specified variable.
variables('<variableName>')
Parameter |
Required |
Type |
Description |
<variableName> |
Yes |
String |
The name for the variable whose value you want |
Return value |
Type |
Description |
<variable-value> |
Any |
The value for the specified variable |
Example
Suppose the current value for a "numItems"
variable is 20. This example gets the integer value for this variable:
variables('numItems')
And returns this result: 20
W
Return all the details about the workflow itself during run
time.
workflow().<property>
Parameter |
Required |
Type |
Description |
<property> |
No |
String |
The name for the workflow property whose value you want |
Example 1
This example returns the name for a workflow's current run:
workflow().run.name
Example 2
If you use Power Automate, you can create a @workflow() expression
that uses the tags output property to get the values from your
flow's flowDisplayName or environmentName property.
For example, you can send custom email notifications from
the flow itself that link back to your flow. These notifications can include an
HTML link that contains the flow's display name in the email title and follows
this syntax:
<a
href=https://flow.microsoft.com/manage/environments/@{workflow()['tags']['environmentName']}/flows/@{workflow()['name']}/details>Open
flow @{workflow()['tags']['flowDisplayName']}</a>
X
Return the XML version for a string that contains a JSON
object.
xml('<value>')
Parameter |
Required |
Type |
Description |
<value> |
Yes |
String |
The string with the JSON object to convert |
Return value |
Type |
Description |
<xml-version> |
Object |
The encoded XML for the specified string or JSON object |
Example 1
This example converts the string to XML:
xml('<name>Sophia Owen</name>')
And returns this result XML:
<name>Sophia Owen</name>
Example 2
This example creates the XML version for this string, which
contains a JSON object:
xml(json('{ "name": "Sophia Owen" }'))
And returns this result XML:
<name>Sophia Owen</name>
Example 3
Suppose you have this JSON object:
{
"person":
{
"name": "Sophia
Owen",
"city": "Seattle"
}
}
This example creates XML for a string that contains this
JSON object:
xml(json('{"person": {"name":
"Sophia Owen", "city": "Seattle"}}'))
And returns this result XML:
<person>
<name>Sophia
Owen</name>
<city>Seattle</city>
<person>
- xpath
Check XML for nodes or values that match an XPath (XML Path
Language) expression, and return the matching nodes or values. An XPath
expression, or just "XPath", helps you navigate an XML document
structure so that you can select nodes or compute values in the XML content.
Note
In Consumption and Standard logic apps, all function
expressions use the .NET
XPath library. XPath expressions are compatible with the underlying
.NET library and support only the expression that the underlying .NET library
supports.
xpath('<xml>', '<xpath>')
Parameter |
Required |
Type |
Description |
<xml> |
Yes |
Any |
The XML string to search for nodes or values that match an
XPath expression value |
<xpath> |
Yes |
Any |
The XPath expression used to find matching XML nodes or
values |
Return value |
Type |
Description |
<xml-node> |
XML |
An XML node when only a single node matches the specified
XPath expression |
<value> |
Any |
The value from an XML node when only a single value
matches the specified XPath expression |
[<xml-node1>, <xml-node2>, ...]
-or- [<value1>, <value2>, ...] |
Array |
An array with XML nodes or values that match the specified
XPath expression |
Example 1
Suppose that you have this 'items' XML string:
<?xml version="1.0"?>
<produce>
<item>
<name>Gala</name>
<type>apple</type>
<count>20</count>
</item>
<item>
<name>Honeycrisp</name>
<type>apple</type>
<count>10</count>
</item>
</produce>
This example passes in the XPath expression, '/produce/item/name/text()',
to find the nodes that match the <name></name> node in
the 'items' XML string, and returns an array with those node values:
xpath(xml(parameters('items')), '/produce/item/name/text()')
The example also uses the parameters() function to get the XML string from 'items' and convert the string to XML format by using the xml() function.
Here's the result array populated with values of the nodes
that match <name></name>:
[ Gala, Honeycrisp ]
Example 2
Following on Example 1, this example passes in the XPath
expression, '/produce/item/name[1]', to find the first name element
that is the child of the item element.
xpath(xml(parameters('items')), '/produce/item/name[1]')
Here's the result: Gala
Example 3
Following on Example 1, this example pass in the XPath
expression, '/produce/item/name[last()]', to find the last name element
that is the child of the item element.
xpath(xml(parameters('items')),
'/produce/item/name[last()]')
Here's the result: Honeycrisp
Example 4
In this example, suppose your items XML string
also contains the attributes, expired='true' and expired='false':
<?xml version="1.0"?>
<produce>
<item>
<name expired='true'>Gala</name>
<type>apple</type>
<count>20</count>
</item>
<item>
<name expired='false'>Honeycrisp</name>
<type>apple</type>
<count>10</count>
</item>
</produce>
This example passes in the XPath expression, '//name[@expired]',
to find all the name elements that have the expired attribute:
xpath(xml(parameters('items')), '//name[@expired]')
Here's the result: [ Gala, Honeycrisp ]
Example 5
In this example, suppose your items XML string
contains only this attribute, expired = 'true':
<?xml version="1.0"?>
<produce>
<item>
<name expired='true'>Gala</name>
<type>apple</type>
<count>20</count>
</item>
<item>
<name>Honeycrisp</name>
<type>apple</type>
<count>10</count>
</item>
</produce>
This example passes in the XPath expression, '//name[@expired
= 'true']', to find all the name elements that have the
attribute, expired = 'true':
xpath(xml(parameters('items')), '//name[@expired = 'true']')
Here's the result: [ Gala ]
Example 6
In this example, suppose your items XML string
also contains these attributes:
- expired='true'
price='12'
- expired='false'
price='40'
<?xml version="1.0"?>
<produce>
<item>
<name expired='true'
price='12'>Gala</name>
<type>apple</type>
<count>20</count>
</item>
<item>
<name expired='false'
price='40'>Honeycrisp</name>
<type>apple</type>
<count>10</count>
</item>
</produce>
This example passes in the XPath expression, '//name[@price>35]',
to find all the name elements that have price > 35:
xpath(xml(parameters('items')), '//name[@price>35]')
Here's the result: Honeycrisp
Example 7
In this example, suppose your items XML string is
the same as in Example 1:
<?xml version="1.0"?>
<produce>
<item>
<name>Gala</name>
<type>apple</type>
<count>20</count>
</item>
<item>
<name>Honeycrisp</name>
<type>apple</type>
<count>10</count>
</item>
</produce>
This example finds nodes that match the <count></count> node
and adds those node values with the sum() function:
xpath(xml(parameters('items')), 'sum(/produce/item/count)')
Here's the result: 30
Example 8
In this example, suppose you have this XML string, which
includes the XML document namespace, xmlns="https://contoso.com":
<?xml version="1.0"?><file xmlns="https://contoso.com"><location>Paris</location></file>
These expressions use either XPath expression, /*[name()="file"]/*[name()="location"] or /*[local-name()="file"
and
namespace-uri()="https://contoso.com"]/*[local-name()="location"],
to find nodes that match the <location></location> node.
These examples show the syntax that you use in either the designer or in the
expression editor:
- xpath(xml(body('Http')),
'/*[name()="file"]/*[name()="location"]')
- xpath(xml(body('Http')),
'/*[local-name()="file" and
namespace-uri()="https://contoso.com"]/*[local-name()="location"]')
Here's the result node that matches the <location></location> node:
<location
xmlns="https://contoso.com">Paris</location>
Important
If you work in code view, escape the double quotation mark
(") by using the backslash character (\). For example, you need to use
escape characters when you serialize an expression as a JSON string. However,
if you're work in the designer or expression editor, you don't need to escape
the double quotation mark because the backslash character is added
automatically to the underlying definition, for example:
- Code
view: xpath(xml(body('Http')),
'/*[name()=\"file\"]/*[name()=\"location\"]')
- Expression
editor: xpath(xml(body('Http')),
'/*[name()="file"]/*[name()="location"]')
Example 9
Following on Example 8, this example uses the XPath
expression, 'string(/*[name()="file"]/*[name()="location"])',
to find the value in the <location></location> node:
xpath(xml(body('Http')),
'string(/*[name()="file"]/*[name()="location"])')
Here's the result: Paris
Comments
Post a Comment