关于 Azure 逻辑应用和 Power Automate 中工作流表达式函数的参考指南
适用范围:Azure 逻辑应用(消耗型 + 标准型)
对于 Azure 逻辑应用和 Power Automate 中的工作流定义,某些表达式获取的值来自运行时操作,而这些运行时操作在工作流开始运行时可能尚不存在。 若要引用或处理这些表达式中的值,可以使用工作流定义语言提供的表达式函数。
注意
本参考页适用于 Azure 逻辑应用和 Power Automate,但显示在 Azure 逻辑应用文档中。 虽然此页面提供的是逻辑应用工作流的相关参考,但这些函数也适用于流应用和逻辑应用工作流。 有关 Power Automate 中的函数和表达式的详细信息,请参阅在条件中使用表达式。
例如,如果想要对整数或浮点数进行求和,可以使用数学函数(如 add() 函数)来计算值。 下面是可以使用函数执行的一些其他示例任务:
任务 | 函数语法 | 结果 |
---|---|---|
返回小写格式的字符串。 | toLower('<text>') 例如:toLower('Hello') |
"hello" |
返回全局唯一标识符 (GUID)。 | guid() | "c2ecc88d-88c8-4096-912c-d6f2e2b138ce" |
若要基于函数的常规用途查找函数,请查看以下各表。 若要了解每个函数的详细信息,请参阅按字母排序的列表。
表达式中的函数
为了展示如何在表达式中使用函数,此示例展示了如何从 customerName
参数获取值,并在表达式中使用 parameters() 函数将该值赋给 accountName
属性:
"accountName": "@parameters('customerName')"
下面是表达式中的函数的其他一般使用方法:
任务 | 表达式中的函数语法 |
---|---|
通过将某个项传递给函数,对该项执行操作。 | "@<functionName>(<item>)" |
1.使用嵌套的 parameters() 函数获取 parameterName 的值。 2.通过将结果传递给 functionName,对该值执行操作。 |
"@<functionName>(parameters('<parameterName>'))" |
1.从嵌套的内部函数 functionName 获取结果。 2.将结果传递给外部函数 functionName2。 |
"@<functionName2>(<functionName>(<item>))" |
1.从 functionName 获取结果。 2.假设结果是一个具有 propertyName 属性的对象,则获取该属性的值。 |
"@<functionName>(<item>).<propertyName>" |
例如,concat()
函数可以采用两个或更多个字符串值作为参数。 此函数将这些字符串组合成一个字符串。 可以传入字符串文字(例如 "Sophia" 和 "Owen"),以便获取组合的字符串 "SophiaOwen":
"customerName": "@concat('Sophia', 'Owen')"
或者,可以从参数获取字符串值。 此示例在每个 concat()
参数以及 firstName
和 lastName
参数中使用 parameters()
函数。 然后,将生成的字符串传递给 concat()
函数,以便获取组合的字符串,例如 "SophiaOwen":
"customerName": "@concat(parameters('firstName'), parameters('lastName'))"
无论使用哪种方式,这两个示例都会将结果分配给 customerName
属性。
使用函数的注意事项
设计器不会计算在设计时用作函数参数的运行时表达式。 设计器要求在设计时可以完全计算所有表达式。
从左到右评估函数参数。
在参数定义的语法中,参数后显示的问号 (?) 表示参数是可选的。 有关示例,请参阅 getFutureTime()。
以纯文本内联显示的函数表达式需要使用封闭的大括号 ({}) 以使用表达式的内插格式。 此格式有助于避免分析问题。 如果函数表达式没有以纯文本内联显示,则无需大括号。
以下示例显示了正确和不正确的语法:
正确:
"<text>/@{<function-name>('<parameter-name>')}/<text>"
不正确:
"<text>/@<function-name>('<parameter-name>')/<text>"
正常:
"@<function-name>('<parameter-name>')"
以下各部分根据函数的常规用途来划分和组织函数,也可以按字母顺序浏览这些函数。
字符串函数
若要使用字符串,可以使用这些字符串函数以及某些集合函数。 字符串函数仅适用于字符串。
字符串函数 | 任务 |
---|---|
chunk | 将字符串或集合拆分为长度相等的区块。 |
concat | 组合两个或更多字符串,并返回组合后的字符串。 |
endsWith | 检查字符串是否以指定的子字符串结尾。 |
formatNumber | 根据指定的格式以字符串形式返回一个数字 |
guid | 生成字符串形式的全局唯一标识符 (GUID)。 |
indexOf | 返回子字符串的起始位置。 |
isFloat | 返回一个布尔值,该值指示字符串是否为浮点数。 |
isInt | 返回一个布尔值,该值指示字符串是否为整数。 |
lastIndexOf | 返回最后一次出现的子字符串的起始位置。 |
length | 返回字符串或数组中的项数。 |
nthIndexOf | 返回子字符串第 n 次出现在字符串中的起始位置或索引值。 |
replace | 将子字符串替换为指定的字符串,并返回更新的字符串。 |
slice | 通过指定起始位置和结束位置或值返回子字符串。 另请参阅子字符串。 |
split | 根据原始字符串中指定的分隔符字符,从较大字符串中返回一个包含子字符串(以逗号分隔)的数组。 |
startsWith | 检查字符串是否以特定的子字符串开头。 |
substring | 返回字符串中的字符,从指定的位置开始。 另请参阅切片。 |
toLower | 返回小写格式的字符串。 |
toUpper | 返回大写格式的字符串。 |
trim | 从字符串中删除前导和尾随空格,并返回更新后的字符串。 |
集合函数
若要使用集合(通常是数组或字符串,有时是字典),可以使用这些集合函数。
集合函数 | 任务 |
---|---|
chunk | 将字符串或集合拆分为长度相等的区块。 |
contains | 检查集合是否包含某个特定项。 |
empty | 检查集合是否为空。 |
first | 返回集合中的第一个项。 |
intersection | 返回其中仅包含指定集合的共有项的一个集合。 |
item | 如果此函数出现在数组的重复操作中,返回数组在操作的当前迭代过程中的当前项。 |
join | 返回一个字符串,其中包含某个数组中的所有项并以指定的分隔符分隔每个项。 |
last | 返回集合中的最后一个项。 |
length | 返回字符串或数组中的项数。 |
reverse | 反转数组中项的顺序。 |
skip | 删除集合开头的项,并返回所有其他项。 |
sort | 对集合中的项进行排序。 |
take | 返回集合开头的项。 |
union | 返回一个集合,其中包含指定集合中的所有项。 |
逻辑比较函数
若要使用条件、比较值和表达式结果或评估各种类型的逻辑,可以使用这些逻辑比较函数。 有关每个函数的完整参考,请参阅按字母排序的列表。
注意
如果使用逻辑函数或条件来比较值,则 NULL 值将转换为空字符串 (""
) 值。 与空字符串(而不是 NULL 值)进行比较时,条件的行为会有所不同。 有关详细信息,请参阅 string() 函数。
逻辑比较函数 | 任务 |
---|---|
and | 检查所有表达式是否为 true。 |
equals | 检查两个值是否相等。 |
greater | 检查第一个值是否大于第二个值。 |
greaterOrEquals | 检查第一个值是否大于或等于第二个值。 |
if | 检查表达式为 true 还是 false。 根据结果返回指定的值。 |
isFloat | 返回一个布尔值,该值指示字符串是否为浮点数。 |
isInt | 返回一个布尔值,该值指示字符串是否为整数。 |
less | 检查第一个值是否小于第二个值。 |
lessOrEquals | 检查第一个值是否小于或等于第二个值。 |
not | 检查表达式是否为 false。 |
or | 检查是否至少一个表达式为 true。 |
转换函数
若要更改值的类型或格式,可以使用这些转换函数。 例如,可将值从布尔值更改为整数。 有关 Azure 逻辑应用在转换期间如何处理内容类型的详细信息,请参阅处理内容类型。 有关每个函数的完整参考,请参阅按字母排序的列表。
注意
Azure 逻辑应用会自动或隐式执行 base64 编码和解码,因此你无需使用编码和解码函数手动执行这些转换。 但是,如果你仍然在设计器中使用这些函数,则可能会在设计器中遇到意外的呈现行为。 这些行为仅影响函数的可见性,而不影响其效果,除非你编辑函数的参数值,这样会从代码中删除函数及其效果。 有关详细信息,请参阅隐式数据类型转换。
转换函数 | 任务 |
---|---|
array | 从单个指定的输入返回数组。 对于多个输入,请参阅 createArray。 |
base64 | 返回字符串的 base64 编码版本。 |
base64ToBinary | 返回 base64 编码字符串的二进制版本。 |
base64ToString | 返回 base64 编码字符串的字符串版本。 |
binary | 返回输入值的二进制版本。 |
bool | 返回输入值的布尔值版本。 |
createArray | 从多个输入返回数组。 |
dataUri | 返回输入值的数据 URI。 |
dataUriToBinary | 返回数据 URI 的二进制版本。 |
dataUriToString | 返回数据 URI 的字符串版本。 |
decimal | 返回小数字符串的小数数。 |
decodeBase64 | 返回 base64 编码字符串的字符串版本。 |
decodeDataUri | 返回数据 URI 的二进制版本。 |
decodeUriComponent | 返回一个字符串,并将其中的转义字符替换为解码后的版本。 |
encodeUriComponent | 返回一个字符串,并将其中的 URL 不安全字符替换为转义字符。 |
float | 返回输入值的浮点数。 |
int | 返回字符串的整数版本。 |
json | 返回字符串或 XML 的 JavaScript 对象表示法 (JSON) 类型的值或对象。 |
string | 返回输入值的字符串版本。 |
uriComponent | 通过将 URL 不安全字符替换为转义字符来返回输入值的 URI 编码版本。 |
uriComponentToBinary | 返回 URI 编码字符串的二进制版本。 |
uriComponentToString | 返回 URI 编码字符串的字符串版本。 |
xml | 返回字符串的 XML 版本。 |
隐式数据类型转换
Azure 逻辑应用会自动或隐式地在某些数据类型之间进行转换,因此你无需手动执行这些转换。 例如,如果在预期应输入字符串的情况下输入了非字符串值,则 Azure 逻辑应用会自动将非字符串值转换为字符串。
例如,假设触发器返回一个数值作为输出:
triggerBody()?['123']
如果在需要字符串作为输入(如 URL)的地方使用了此数值输出值,则 Azure 逻辑应用会使用大括号 ({}
) 表示法自动将该值转换为字符串:
@{triggerBody()?['123']}
Base64 编码和解码
Azure 逻辑应用会自动或隐式执行 base64 编码或解码,因此你无需使用相应的函数手动执行这些转换:
base64(<value>)
base64ToBinary(<value>)
base64ToString(<value>)
base64(decodeDataUri(<value>))
concat('data:;base64,',<value>)
concat('data:,',encodeUriComponent(<value>))
decodeDataUri(<value>)
备注
如果你在使用设计器时手动添加任何这些函数(直接添加到触发器或操作中或者使用表达式编辑器),则请先离开设计器,然后再返回到设计器,这样该函数就会从设计器中消失,只留下参数值。 如果你选择一个使用此函数的触发器或操作而不编辑函数的参数值,则也会出现此行为。 此结果只影响函数的可见性,而不影响效果。 在代码视图中,函数不受影响。 但是,如果你编辑函数的参数值,则会从代码视图中删除函数及其效果,而只留下函数的参数值。
数学函数
若要使用整数和浮点数,可以使用这些数学函数。 有关每个函数的完整参考,请参阅按字母排序的列表。
数学函数 | 任务 |
---|---|
add | 返回两个数字相加的结果。 |
div | 返回两个数字相除的结果。 |
max | 返回一组数字或数组中的最大值。 |
min | 返回一组数字或数组中的最小值。 |
mod | 返回将两个数字相除后的余数。 |
mul | 返回将两个数字相乘得到的乘积。 |
rand | 返回指定范围内的随机整数。 |
range | 返回以指定整数开头的一个整数数组。 |
sub | 返回第一个数字减去第二个数字得到的结果。 |
日期和时间函数
若要使用日期和时间,可以使用这些日期和时间函数。 有关每个函数的完整参考,请参阅按字母排序的列表。
日期或时间函数 | 任务 |
---|---|
addDays | 将日期添加到时间戳。 |
addHours | 将小时添加到时间戳。 |
addMinutes | 将分钟添加到时间戳。 |
addSeconds | 将秒添加到时间戳。 |
addToTime | 将指定的时间单位加到时间戳。 另请参阅 getFutureTime。 |
convertFromUtc | 将时间戳从协调世界时 (UTC) 转换为目标时区。 |
convertTimeZone | 将时间戳从源时区转换为目标时区。 |
convertToUtc | 将时间戳从源时区转换为协调世界时 (UTC)。 |
dateDifference | 以时间跨度形式返回两个日期之间的差值。 |
dayOfMonth | 返回时间戳中月份组成部分的日期。 |
dayOfWeek | 返回时间戳中周组成部分的星期日期。 |
dayOfYear | 返回时间戳中年组成部分的日期。 |
formatDateTime | 返回时间戳中的日期。 |
getFutureTime | 返回当前时间戳加上指定的时间单位。 另请参阅 addToTime。 |
getPastTime | 返回当前时间戳减去指定的时间单位。 另请参阅 subtractFromTime。 |
parseDateTime | 从包含时间戳的字符串中返回时间戳。 |
startOfDay | 返回时间戳中的天的开始时间。 |
startOfHour | 返回时间戳中的小时的开始时间。 |
startOfMonth | 返回时间戳中的月份的开始时间。 |
subtractFromTime | 从时间戳中减去一定数目的时间单位。 另请参阅 getPastTime。 |
ticks | 返回指定时间戳的 ticks 属性值。 |
utcNow | 返回字符串形式的当前时间戳。 |
工作流函数
这些工作流函数有助于:
- 在运行时获取有关工作流实例的详细信息。
- 使用用于实例化逻辑应用或流的输入。
- 引用触发器和操作的输出。
例如,可以引用一个操作的输出,并在后面的操作中使用该数据。 有关每个函数的完整参考,请参阅按字母排序的列表。
工作流函数 | 任务 |
---|---|
action | 返回当前操作在运行时的输出,或者来自其他 JSON 名称和值对的值。 另请参阅 actions。 |
actions | 返回操作在运行时的输出,或者来自其他 JSON 名称和值对的值。 另请参阅 action。 |
body | 返回操作在运行时的 body 输出。 |
formDataMultiValues | 创建一个数组,其中包含与表单数据或表单编码操作输出中某个键名匹配的值。 |
formDataValue | 返回与操作的表单数据或表单编码输出中的键名称匹配的单个值。 |
item | 如果此函数出现在数组的重复操作中,返回数组在操作的当前迭代过程中的当前项。 |
items | 如果此函数出现在 Foreach 或 Until 循环中,返回指定循环中的当前项。 |
iterationIndexes | 如果此函数出现在 Until 循环中,返回当前迭代的索引值。 可以在嵌套式的 Until 循环中使用该函数。 |
listCallbackUrl | 返回调用某个触发器或操作的“回调 URL”。 |
multipartBody | 返回具有多个部分的操作输出中某个特定部分的正文。 |
outputs | 返回操作在运行时的输出。 |
parameters | 返回工作流定义中描述的参数的值。 |
result | 返回指定的有范围操作中顶级操作的输入和输出,例如 For_each 、Until 和 Scope 。 |
trigger | 返回触发器在运行时的输出,或者来自其他 JSON 名称和值对的输出。 另请参阅 triggerOutputs 和 triggerBody。 |
triggerBody | 返回触发器在运行时的 body 输出。 请参阅 trigger。 |
triggerFormDataValue | 返回与表单数据或表单编码触发器输出中某个键名匹配的单个值。 |
triggerMultipartBody | 返回触发器多部分输出中特定部分的主体。 |
triggerFormDataMultiValues | 创建一个数组,该数组的值与表单数据或表单编码触发器输出中某个键名匹配。 |
triggerOutputs | 返回触发器在运行时的输出,或者来自其他 JSON 名称和值对的值。 请参阅 trigger。 |
variables | 返回指定变量的值。 |
workflow | 返回运行期间有关工作流本身的所有详细信息。 |
URI 分析函数
若要使用统一资源标识符 (URI) 并获取这些 URI 的各个属性值,可以使用这些 URI 分析函数。 有关每个函数的完整参考,请参阅按字母排序的列表。
URI 分析函数 | 任务 |
---|---|
uriHost | 返回统一资源标识符 (URI) 的 host 值。 |
uriPath | 返回统一资源标识符 (URI) 的 path 值。 |
uriPathAndQuery | 返回统一资源标识符 (URI) 的 path 和 query 值。 |
uriPort | 返回统一资源标识符 (URI) 的 port 值。 |
uriQuery | 返回统一资源标识符 (URI) 的 query 值。 |
uriScheme | 返回统一资源标识符 (URI) 的 scheme 值。 |
操作函数:JSON 和 XML
若要使用 JSON 对象和 XML 节点,可以使用这些操作函数。 有关每个函数的完整参考,请参阅按字母排序的列表。
操作函数 | 任务 |
---|---|
addProperty | 将属性及其值或名称/值对添加到 JSON 对象,并返回更新的对象。 |
coalesce | 返回一个或多个参数中的第一个非 null 值。 |
removeProperty | 从 JSON 对象中删除某个属性,并返回更新的对象。 |
setProperty | 设置 JSON 对象的属性值并返回更新的对象。 |
xpath | 检查 XML 中是否存在与 XPath(XML 路径语言)表达式匹配的节点或值,并返回匹配的节点或值。 |
---------------------------------
所有函数 - 字母列表
本部分按字母顺序列出所有可用函数。
A
action
返回“当前”操作在运行时的输出,或者来自其他 JSON 名称和值对的值,可以将其分配给表达式。 默认情况下,此函数引用整个操作对象,但是也可以指定你需要其值的属性。 另请参阅 actions()。
只能在以下位置使用 action()
函数:
- Webhook 操作的
unsubscribe
属性,用以访问原始subscribe
请求的结果 - 操作的
trackedProperties
属性 - 操作的
do-until
循环条件
action()
action().outputs.body.<property>
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<property> | 否 | String | 需要获取其值的操作对象属性的名称:name、startTime、endTime、inputs、outputs、status、code、trackingId 和 clientTrackingId。 在 Azure 门户中,可以通过查看特定运行历史记录的详细信息来查找这些属性。 有关详细信息,请参阅 REST API - 工作流运行操作。 |
返回值 | 类型 | 说明 |
---|---|---|
<action-output> | String | 当前操作或属性的输出 |
actions
返回操作在运行时的输出,或者来自其他 JSON 名称和值对的值,可以将其分配给表达式。 默认情况下,此函数引用整个操作对象,但是也可以指定你需要其值的属性。 有关简写版本,请参阅 body()。 有关当前操作,请参阅 action()。
提示
actions()
函数以字符串的形式返回输出。 如果需要将返回值用作 JSON 对象,则首先需要转换字符串值。 可以使用分析 JSON 操作将字符串值转换为 JSON 对象。
注意
以前,当指定基于另一操作的输出运行的操作时,可以使用 actions()
函数或 conditions
元素。 但是,若要显式声明操作之间的依赖关系,现在必须使用依赖的操作的 runAfter
属性。
若要详细了解 runAfter
属性,请参阅使用 runAfter 属性捕获和处理故障。
actions('<actionName>')
actions('<actionName>').outputs.body.<property>
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<actionName> | 是 | String | 需要获取其输出的操作对象的名称 |
<property> | 否 | String | 需要获取其值的操作对象属性的名称:name、startTime、endTime、inputs、outputs、status、code、trackingId 和 clientTrackingId。 在 Azure 门户中,可以通过查看特定运行历史记录的详细信息来查找这些属性。 有关详细信息,请参阅 REST API - 工作流运行操作。 |
返回值 | 类型 | 说明 |
---|---|---|
<action-output> | String | 指定操作或属性的输出 |
示例
此示例获取 X 操作 Get user
在运行时的 status
属性值:
actions('Get_user').outputs.body.status
并返回以下结果:"Succeeded"
add
返回两个数字相加的结果。
add(<summand_1>, <summand_2>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<summand_1>, <summand_2> | 是 | 整数、浮点数或混合类型 | 要相加的数字 |
返回值 | 类型 | 说明 |
---|---|---|
<result-sum> | 整数或浮点数 | 指定数字相加的结果。 |
示例
此示例将指定的数字相加:
add(1, 1.5)
并返回以下结果:2.5
addDays
将日期添加到时间戳。
addDays('<timestamp>', <days>, '<format>'?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
<days> | 是 | Integer | 要加上的正负天数 |
<format> | 否 | String | 一个数字格式字符串,它是单个格式说明符或自定义格式模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 如果格式不是有效值,则会生成错误。 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-timestamp> | 字符串 | 时间戳加上指定的天数 |
示例 1
此示例将 10 天加到指定的时间戳:
addDays('2018-03-15T00:00:00Z', 10)
并返回以下结果:"2018-03-25T00:00:00.0000000Z"
示例 2
此示例从指定的时间戳减去 5 天:
addDays('2018-03-15T00:00:00Z', -5)
并返回以下结果:"2018-03-10T00:00:00.0000000Z"
addHours
将小时添加到时间戳。
addHours('<timestamp>', <hours>, '<format>'?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
<hours> | 是 | Integer | 要加上的正负小时数 |
<format> | 否 | String | 一个数字格式字符串,它是单个格式说明符或自定义格式模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 如果格式不是有效值,则会生成错误。 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-timestamp> | 字符串 | 时间戳加上指定的小时数 |
示例 1
此示例将 10 小时加到指定的时间戳:
addHours('2018-03-15T00:00:00Z', 10)
并返回以下结果:"2018-03-15T10:00:00.0000000Z"
示例 2
此示例从指定的时间戳减去 5 小时:
addHours('2018-03-15T15:00:00Z', -5)
并返回以下结果:"2018-03-15T10:00:00.0000000Z"
addMinutes
将分钟添加到时间戳。
addMinutes('<timestamp>', <minutes>, '<format>'?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
<minutes> | 是 | Integer | 要加上的正负分钟数 |
<format> | 否 | String | 一个数字格式字符串,它是单个格式说明符或自定义格式模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 如果格式不是有效值,则会生成错误。 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-timestamp> | 字符串 | 时间戳加上指定的分钟数 |
示例 1
此示例将 10 分钟加到指定的时间戳:
addMinutes('2018-03-15T00:10:00Z', 10)
并返回以下结果:"2018-03-15T00:20:00.0000000Z"
示例 2
此示例从指定的时间戳减去 5 分钟:
addMinutes('2018-03-15T00:20:00Z', -5)
并返回以下结果:"2018-03-15T00:15:00.0000000Z"
addProperty
将属性及其值或名称/值对添加到 JSON 对象,并返回更新的对象。 如果在运行时已存在该属性,此函数会失败并引发错误。
addProperty(<object>, '<property>', <value>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<object> | 是 | 对象 | 要将属性添加到的 JSON 对象 |
<property> | 是 | String | 要添加的属性的名称 |
<value> | 是 | 任意 | 属性的值 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-object> | 对象 | 具有指定属性的更新后 JSON 对象 |
若要向现有属性中添加父属性,请使用 setProperty()
函数,而不是 addProperty()
函数。 否则,函数仅返回子对象作为输出。
setProperty(<object>, '<parent-property>', addProperty(<object>['<parent-property>'], '<child-property>', <value>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<object> | 是 | 对象 | 要将属性添加到的 JSON 对象 |
<parent-property> | 是 | String | 要在其中添加子属性的父属性的名称 |
<child-property> | 是 | String | 要添加的子属性的名称 |
<value> | 是 | 任意 | 要为指定属性设置的值 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-object> | 对象 | 设置了其属性的更新后 JSON 对象 |
示例 1
此示例将 middleName
属性加到 JSON 对象,可通过 JSON() 函数将其从字符串转换为 JSON。 该对象已经包含 firstName
和 surName
属性。 该函数将指定的值分配给新属性,并返回更新后的对象:
addProperty(json('{ "firstName": "Sophia", "lastName": "Owen" }'), 'middleName', 'Anne')
下面是当前的 JSON 对象:
{
"firstName": "Sophia",
"surName": "Owen"
}
下面是已更新的 JSON 对象:
{
"firstName": "Sophia",
"middleName": "Anne",
"surName": "Owen"
}
示例 2
此示例将 middleName
子属性加到 JSON 对象中的现有 customerName
属性,可通过 JSON() 函数将其从字符串转换为 JSON。 该函数将指定的值分配给新属性,并返回更新后的对象:
setProperty(json('{ "customerName": { "firstName": "Sophia", "surName": "Owen" } }'), 'customerName', addProperty(json('{ "customerName": { "firstName": "Sophia", "surName": "Owen" } }')['customerName'], 'middleName', 'Anne'))
下面是当前的 JSON 对象:
{
"customerName": {
"firstName": "Sophia",
"surName": "Owen"
}
}
下面是已更新的 JSON 对象:
{
"customerName": {
"firstName": "Sophia",
"middleName": "Anne",
"surName": "Owen"
}
}
addSeconds
将秒添加到时间戳。
addSeconds('<timestamp>', <seconds>, '<format>'?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
<seconds> | 是 | Integer | 要加上的正负秒数 |
<format> | 否 | String | 一个数字格式字符串,它是单个格式说明符或自定义格式模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 如果格式不是有效值,则会生成错误。 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-timestamp> | 字符串 | 时间戳加上指定的秒数 |
示例 1
此示例将 10 秒加到指定的时间戳:
addSeconds('2018-03-15T00:00:00Z', 10)
并返回以下结果:"2018-03-15T00:00:10.0000000Z"
示例 2
此示例从指定的时间戳减去 5 秒:
addSeconds('2018-03-15T00:00:30Z', -5)
并返回以下结果:"2018-03-15T00:00:25.0000000Z"
addToTime
将指定的时间单位加到时间戳。 另请参阅 getFutureTime()。
addToTime('<timestamp>', <interval>, '<timeUnit>', '<format>'?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
<间隔> | 是 | Integer | 要添加的指定时间单位数 |
<timeUnit> | 是 | 字符串 | 间隔使用的时间单位:“秒”、“分钟”、“小时”、“日”、“周”、“月”、“年” |
<format> | 否 | String | 一个数字格式字符串,它是单个格式说明符或自定义格式模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 如果格式不是有效值,则会生成错误。 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-timestamp> | 字符串 | 时间戳加上指定的时间单位数 |
示例 1
此示例将 1 天加到指定的时间戳:
addToTime('2018-01-01T00:00:00Z', 1, 'Day')
并返回以下结果:"2018-01-02T00:00:00.0000000Z"
示例 2
此示例将 1 天加到指定的时间戳:
addToTime('2018-01-01T00:00:00Z', 1, 'Day', 'D')
并使用可选的“D”格式返回结果:"Tuesday, January 2, 2018"
and
检查所有表达式是否为 true。 当所有表达式均为 true 时返回 true,当至少一个表达式为 false 时返回 false。
and(<expression1>, <expression2>, ...)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<expression1>、<expression2>,... | 是 | Boolean | 要检查的表达式 |
返回值 | 类型 | 说明 |
---|---|---|
true 或 false | 布尔 | 当所有表达式均为 true 时返回 true。 当至少一个表达式为 false 时返回 false。 |
示例 1
这些示例检查指定的布尔值是否全为 true:
and(true, true)
and(false, true)
and(false, false)
并返回以下结果:
- 第一个示例:两个表达式均为 true,因此返回
true
。 - 第二个示例:一个表达式为 false,因此返回
false
。 - 第三个示例:两个表达式均为 false,因此返回
false
。
示例 2
这些示例检查指定的表达式是否均为 true:
and(equals(1, 1), equals(2, 2))
and(equals(1, 1), equals(1, 2))
and(equals(1, 2), equals(1, 3))
并返回以下结果:
- 第一个示例:两个表达式均为 true,因此返回
true
。 - 第二个示例:一个表达式为 false,因此返回
false
。 - 第三个示例:两个表达式均为 false,因此返回
false
。
array
从单个指定的输入返回数组。 对于多个输入,请参阅 createArray()。
array('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 用于创建数组的字符串 |
返回值 | 类型 | 说明 |
---|---|---|
[<value>] | Array | 一个包含单一指定输入的数组 |
示例
此示例基于“hello”字符串创建数组:
array('hello')
并返回以下结果:["hello"]
B
base64
返回字符串的 base64 编码版本。
注意
Azure 逻辑应用会自动或隐式执行 base64 编码和解码,因此你无需使用编码和解码函数手动执行这些转换。 但是,如果你仍然使用这些函数,则可能会在设计器中遇到意外的呈现行为。 这些行为仅影响函数的可见性,而不影响其效果,除非你编辑函数的参数值,这样会从代码中删除函数及其效果。 有关详细信息,请参阅 Base64 编码和解码。
base64('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 输入字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<base64-string> | 字符串 | 返回输入字符串的 base64 编码版本 |
示例
此示例将“hello”字符串转换为 base64 编码的字符串:
base64('hello')
并返回以下结果:"aGVsbG8="
base64ToBinary
返回 base64 编码字符串的二进制版本。
注意
Azure 逻辑应用会自动或隐式执行 base64 编码和解码,因此你无需使用编码和解码函数手动执行这些转换。 但是,如果你仍然在设计器中使用这些函数,则可能会在设计器中遇到意外的呈现行为。 这些行为仅影响函数的可见性,而不影响其效果,除非你编辑函数的参数值,这样会从代码中删除函数及其效果。 有关详细信息,请参阅 Base64 编码和解码。
base64ToBinary('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 要转换的 base64 编码字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<binary-for-base64-string> | 字符串 | base64 编码字符串的二进制版本 |
示例
此示例将 base64 编码的“aGVsbG8=”字符串转换为二进制字符串:
base64ToBinary('aGVsbG8=')
例如,假设你正在使用 HTTP 操作发送请求。 你可以使用 base64ToBinary()
将 base64 编码字符串转换为二进制数据,并使用请求中的 application/octet-stream
内容类型发送该数据。
base64ToString
返回 base64 编码字符串的字符串版本,有效地对 base64 字符串进行解码。 使用此函数,而不是已弃用的 decodeBase64()。
注意
Azure 逻辑应用会自动或隐式执行 base64 编码和解码,因此你无需使用编码和解码函数手动执行这些转换。 但是,如果你仍然在设计器中使用这些函数,则可能会在设计器中遇到意外的呈现行为。 这些行为仅影响函数的可见性,而不影响其效果,除非你编辑函数的参数值,这样会从代码中删除函数及其效果。 有关详细信息,请参阅 Base64 编码和解码。
base64ToString('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 要解码的 base64 编码字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<decoded-base64-string> | 字符串 | base64 编码字符串的字符串版本 |
示例
此示例将 base64 编码的“aGVsbG8=”字符串转换为单纯的字符串:
base64ToString('aGVsbG8=')
并返回以下结果:"hello"
binary
返回字符串的 base64 编码的二进制版本。
binary('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 要转换的字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<binary-for-input-value> | 字符串 | 指定字符串的 base64 编码的二进制版本 |
示例
例如,使用返回图像或视频文件的 HTTP 操作。 可使用 binary()
将该值转换为 base-64 编码的内容信封模型。 然后,你可以在其他操作(例如 Compose
)中重复使用内容信封。
你可以使用此函数表达式发送请求中带有 application/octet-stream
内容类型的字符串字节。
body
返回操作在运行时的 body
输出。 actions('<actionName>').outputs.body
的速记。 请参阅 actions()。
body('<actionName>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<actionName> | 是 | String | 所需的操作 body 输出的名称 |
返回值 | 类型 | 说明 |
---|---|---|
<action-body-output> | String | 指定操作的 body 输出 |
示例
此示例获取 Get user
X 操作的 body
输出:
body('Get_user')
并返回以下结果:
"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
返回值的布尔版本。
bool(<value>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 任意 | 要转换为布尔值的值。 |
如果对某个对象使用 bool()
,该对象的值必须是可转换为布尔值的字符串或整数。
返回值 | 类型 | 说明 |
---|---|---|
true 或 false |
布尔 | 指定的值的布尔值版本。 |
输出
以下示例显示 bool()
支持的不同类型的输入:
输入值 | 类型 | 返回值 |
---|---|---|
bool(1) |
Integer | true |
bool(0) |
Integer | false |
bool(-1) |
Integer | true |
bool('true') |
String | true |
bool('false') |
字符串 | false |
C
块区 (chunk)
将字符串或数组拆分为长度相等的区块。
chunk('<collection>', '<length>')
chunk([<collection>], '<length>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<collection> | 是 | 字符串或数组 | 要拆分的集合 |
<length> | 是 | 每个区块的长度 |
返回值 | 类型 | 说明 |
---|---|---|
<collection> | Array | 具有指定长度的区块数组 |
示例 1
此示例将字符串拆分为长度为 10 的区块:
chunk('abcdefghijklmnopqrstuvwxyz', 10)
并返回以下结果:['abcdefghij', 'klmnopqrst', 'uvwxyz']
示例 2
此示例将数组拆分为长度为 5 的区块。
chunk(createArray(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), 5)
并返回以下结果:[ [1,2,3,4,5], [6,7,8,9,10], [11,12] ]
coalesce
返回一个或多个参数中的第一个非 null 值。 空字符串、空数组和空对象不为 NULL。
coalesce(<object_1>, <object_2>, ...)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<object_1>, <object_2>, ... | 是 | 任意,可以混用各种类型 | 要检查是否为 null 的一个或多个项 |
返回值 | 类型 | 说明 |
---|---|---|
<first-non-null-item> | 任意 | 第一个不为 NULL 的项或值。 如果所有参数均为 null,则此函数返回 null。 |
示例
这些示例返回指定值中的第一个非 null 值,当所有值均为 null 时返回 null:
coalesce(null, true, false)
coalesce(null, 'hello', 'world')
coalesce(null, null, null)
并返回以下结果:
- 第一个示例:
true
- 第二个示例:
"hello"
- 第三个示例:
null
concat
组合两个或更多字符串,并返回组合后的字符串。
concat('<text1>', '<text2>', ...)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<text1>, <text2>, ... | 是 | 字符串 | 至少两个要组合的字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<text1text2...> | String | 基于组合后的输入字符串创建的字符串。 注意:结果的长度不得超过 104,857,600 个字符。 |
注意
Azure 逻辑应用会自动或隐式执行 base64 编码和解码,因此,当你对需要编码或解码的数据使用 concat()
函数时,无需手动执行这些转换:
concat('data:;base64,',<value>)
concat('data:,',encodeUriComponent(<value>))
但是,如果你仍然在设计器中使用此函数,则可能会在设计器中遇到意外的呈现行为。 这些行为仅影响函数的可见性,而不影响效果,除非你编辑函数的参数值,这样就会从代码中删除函数及其效果。 有关详细信息,请参阅 Base64 编码和解码。
示例
此示例将字符串“Hello”和“World”组合到一起:
concat('Hello', 'World')
并返回以下结果:"HelloWorld"
contains
检查集合是否包含某个特定项。 当找到该项目时返回 true,找不到该项目时返回 false。 此函数区分大小写。
contains('<collection>', '<value>')
contains([<collection>], '<value>')
具体而言,此函数对以下集合类型起作用:
- 字符串,在其中查找子字符串
- 数组,在其中查找值
- 字典,在其中查找键
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<collection> | 是 | 字符串、数组或字典 | 要检查的集合 |
<value> | 是 | 分别为字符串、数组或字典 | 要查找的项 |
返回值 | 类型 | 说明 |
---|---|---|
true 或 false | Boolean | 当找到该项时返回 true。 找不到时返回 false。 |
示例 1
此示例检查字符串“hello world”中是否有子字符串“world”并返回 true:
contains('hello world', 'world')
示例 2
此示例检查字符串“hello world”中是否有子字符串“universe”并返回 false:
contains('hello world', 'universe')
convertFromUtc
将时间戳从协调世界时 (UTC) 转换为目标时区。
convertFromUtc('<timestamp>', '<destinationTimeZone>', '<format>'?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
<destinationTimeZone> | 是 | 字符串 | 目标时区的名称。 有关时区名称,请查看:Microsoft Windows 默认时区。 |
<format> | 否 | String | 一个数字格式字符串,它是单个格式说明符或自定义格式模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 如果格式不是有效值,则会生成错误。 |
返回值 | 类型 | 说明 |
---|---|---|
<converted-timestamp> | String | 已转换为目标时区且无时区 UTC 时差的时间戳。 |
示例 1
此示例将时间戳转换为指定的时区:
convertFromUtc('2018-01-01T08:00:00.0000000Z', 'Pacific Standard Time')
并返回以下结果:"2018-01-01T00:00:00.0000000"
示例 2
此示例将时间戳转换为指定的时区和格式:
convertFromUtc('2018-01-01T08:00:00.0000000Z', 'Pacific Standard Time', 'D')
并返回以下结果:"Monday, January 1, 2018"
convertTimeZone
将时间戳从源时区转换为目标时区。
convertTimeZone('<timestamp>', '<sourceTimeZone>', '<destinationTimeZone>', '<format>'?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
<sourceTimeZone> | 是 | 字符串 | 源时区的名称。 如需了解时区名称,请参阅 Microsoft Windows 默认时区,但可能需要删除时区名称中的所有标点。 |
<destinationTimeZone> | 是 | 字符串 | 目标时区的名称。 如需了解时区名称,请参阅 Microsoft Windows 默认时区,但可能需要删除时区名称中的所有标点。 |
<format> | 否 | String | 一个数字格式字符串,它是单个格式说明符或自定义格式模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 如果格式不是有效值,则会生成错误。 |
返回值 | 类型 | 说明 |
---|---|---|
<converted-timestamp> | 字符串 | 已转换为目标时区的时间戳 |
示例 1
此示例将源时区转换为目标时区:
convertTimeZone('2018-01-01T08:00:00.0000000Z', 'UTC', 'Pacific Standard Time')
并返回以下结果:"2018-01-01T00:00:00.0000000"
示例 2
此示例将时区转换为指定的时区和格式:
convertTimeZone('2018-01-01T80:00:00.0000000Z', 'UTC', 'Pacific Standard Time', 'D')
并返回以下结果:"Monday, January 1, 2018"
convertToUtc
将时间戳从源时区转换为协调世界时 (UTC)。
convertToUtc('<timestamp>', '<sourceTimeZone>', '<format>'?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
<sourceTimeZone> | 是 | 字符串 | 源时区的名称。 如需了解时区名称,请参阅 Microsoft Windows 默认时区,但可能需要删除时区名称中的所有标点。 |
<format> | 否 | String | 一个数字格式字符串,它是单个格式说明符或自定义格式模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 如果格式不是有效值,则会生成错误。 |
返回值 | 类型 | 说明 |
---|---|---|
<converted-timestamp> | 字符串 | 已转换为 UTC 的时间戳 |
示例 1
此示例将时间戳转换为 UTC:
convertToUtc('01/01/2018 00:00:00', 'Pacific Standard Time')
并返回以下结果:"2018-01-01T08:00:00.0000000Z"
示例 2
此示例将时间戳转换为 UTC:
convertToUtc('01/01/2018 00:00:00', 'Pacific Standard Time', 'D')
并返回以下结果:"Monday, January 1, 2018"
createArray
从多个输入返回数组。 对于单输入数组,请参阅 array()。
createArray('<object1>', '<object2>', ...)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<object1>, <object2>, ... | 是 | 任意,但不能混用 | 至少两个用于创建数组的项 |
返回值 | 类型 | 说明 |
---|---|---|
[<object1>, <object2>, ...] | Array | 基于所有输入项创建的数组 |
示例
此示例基于以下输入创建数组:
createArray('h', 'e', 'l', 'l', 'o')
并返回以下结果:["h", "e", "l", "l", "o"]
D
dataUri
返回字符串的数据统一资源标识符 (URI)。
dataUri('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 要转换的字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<data-uri> | 字符串 | 输入字符串的数据 URI |
示例
此示例创建“hello”字符串的数据 URI:
dataUri('hello')
并返回以下结果:"data:text/plain;charset=utf-8;base64,aGVsbG8="
dataUriToBinary
返回数据统一资源标识符 (URI) 的二进制版本。
请使用此函数而非 decodeDataUri()。
虽然这两个函数的工作方式相同,但首选 dataUriBinary()
。
dataUriToBinary('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 要转换的数据 URI |
返回值 | 类型 | 说明 |
---|---|---|
<binary-for-data-uri> | 字符串 | 数据 URI 的二进制版本 |
示例
此示例创建以下数据 URI 的二进制版本:
dataUriToBinary('data:text/plain;charset=utf-8;base64,aGVsbG8=')
并返回以下结果:
"01100100011000010111010001100001001110100111010001100101011110000111010000101111011100000 1101100011000010110100101101110001110110110001101101000011000010111001001110011011001010111 0100001111010111010101110100011001100010110100111000001110110110001001100001011100110110010 10011011000110100001011000110000101000111010101100111001101100010010001110011100000111101"
dataUriToString
返回数据统一资源标识符 (URI) 的字符串版本。
dataUriToString('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 要转换的数据 URI |
返回值 | 类型 | 说明 |
---|---|---|
<string-for-data-uri> | 字符串 | 数据 URI 的字符串版本 |
示例
此示例创建以下数据 URI 的字符串:
dataUriToString('data:text/plain;charset=utf-8;base64,aGVsbG8=')
并返回以下结果:"hello"
dateDifference
以时间跨度形式返回两个时间戳之间的差值。 此函数从 endDate
中减去 startDate
,并以字符串格式返回时间戳结果。
dateDifference('<startDate>', '<endDate>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<startDate> | 是 | 字符串 | 包含时间戳的字符串 |
<endDate> | 是 | 字符串 | 包含时间戳的字符串 |
返回值 | 类型 | 描述 |
---|---|---|
<timespan> | 字符串 | 两个时间戳之间的差值,即字符串格式的时间戳。 如果 startDate 比 endDate 更新,结果为负值。 |
示例
此示例从第二个值中减去第一个值:
dateDifference('2015-02-08', '2018-07-30')
并返回以下结果:"1268.00:00:00"
dayOfMonth
基于时间戳返回月中的某天。
dayOfMonth('<timestamp>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<day-of-month> | Integer | 基于指定的时间戳返回月中的某天 |
示例
此示例基于以下时间戳返回月中的某天:
dayOfMonth('2018-03-15T13:27:36Z')
并返回以下结果:15
dayOfWeek
基于时间戳返回周几。
dayOfWeek('<timestamp>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<day-of-week> | Integer | 指定的时间戳中的周几,其中周日为 0,周一为 1,依此类推 |
示例
此示例基于以下时间戳返回周几:
dayOfWeek('2018-03-15T13:27:36Z')
并返回以下结果:4
dayOfYear
基于时间戳返回年中的某天。
dayOfYear('<timestamp>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<day-of-year> | Integer | 基于指定的时间戳返回年中的某天 |
示例
此示例基于以下时间戳返回年中的某天:
dayOfYear('2018-03-15T13:27:36Z')
并返回以下结果:74
Decimal
将字符串中的小数数作为小数数返回。 当你处理需要小数精度的数据时,也可以使用此函数作为逻辑比较函数和数学函数的输入。 若要在使用 decimal() 函数的结果时捕获并保持精度,请用字符串函数包装任何小数输出。 下面的示例显示了这种用法,如果将小数结果用作数字,可能会丢失精度。
注意
在这个函数和 Azure Logic应用运行时的上下文中讨论的小数精度与 .NET 小数精度相同。
decimal('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 字符串中的小数数 |
返回值 | 类型 | 说明 |
---|---|---|
<小数> | 十进制数 | 输入字符串的小数数 |
示例 1
此示例创建一个用作数字的小数:
decimal('1.2345678912312131') // Returns 1.234567891231213.
示例 2
此示例创建一个小数,然后将结果转换为字符串以保持精度:
string(decimal('1.2345678912312131')) // Returns "1.2345678912312131".
示例 3
此示例对两个小数数字使用数学函数,并将结果用作数字:
add(decimal('1.2345678912312131'), decimal('1.2345678912312131')) // Returns 2.469135782462426.
示例 4
此示例对两个小数数字使用数学函数,并将结果转换为字符串以保持精度:
string(add(decimal('1.2345678912312131'), decimal('1.2345678912312131'))) // Returns "2.4691357824624262".
decodeBase64(已弃用)
此函数已弃用,因此请改用 base64ToString()。
decodeDataUri
返回数据统一资源标识符 (URI) 的二进制版本。 请考虑使用 dataUriToBinary() 而非 decodeDataUri()
。 虽然这两个函数的工作方式相同,但首选 dataUriToBinary()
。
注意
Azure 逻辑应用会自动或隐式执行 base64 编码和解码,因此你无需使用编码和解码函数手动执行这些转换。 但是,如果你仍然在设计器中使用这些函数,则可能会在设计器中遇到意外的呈现行为。 这些行为仅影响函数的可见性,而不影响其效果,除非你编辑函数的参数值,这样会从代码中删除函数及其效果。 有关详细信息,请参阅 Base64 编码和解码。
decodeDataUri('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 要解码的数据 URI 字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<binary-for-data-uri> | 字符串 | 数据 URI 字符串的二进制版本 |
示例
此示例返回以下数据 URI 的二进制版本:
decodeDataUri('data:text/plain;charset=utf-8;base64,aGVsbG8=')
并返回以下结果:
"01100100011000010111010001100001001110100111010001100101011110000111010000101111011100000 1101100011000010110100101101110001110110110001101101000011000010111001001110011011001010111 0100001111010111010101110100011001100010110100111000001110110110001001100001011100110110010 10011011000110100001011000110000101000111010101100111001101100010010001110011100000111101"
decodeUriComponent
返回一个字符串,并将其中的转义字符替换为解码后的版本。
decodeUriComponent('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 包含要解码的转义字符的字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<decoded-uri> | 字符串 | 包含解码后的转义字符的更新后字符串 |
示例
此示例将以下字符串中的转义字符替换为解码后的版本:
decodeUriComponent('https%3A%2F%2Fcontoso.com')
并返回以下结果:"https://contoso.com"
div
返回两个数字相除的结果。 若要获取余数结果,请参阅 mod()。
div(<dividend>, <divisor>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<dividend> | 是 | 整数或浮点数 | 要用作 divisor 的被除数的数字 |
<divisor> | 是 | 整数或浮点数 | 除以被除数的数字,但不能为 0 |
返回值 | 类型 | 说明 |
---|---|---|
<quotient-result> | 整数或浮点数 | 将第一个数字除以第二个数字后得到的结果。 如果被除数或除数为浮点类型,则结果也是浮点类型。 注意:若要将浮点结果转换为整数,请尝试在逻辑应用中创建一个函数并在 Azure 中调用该函数。 |
示例 1
这两个示例都返回整数类型的以下值:2
div(10,5)
div(11,5)
示例 2
这两个示例都返回浮点类型的以下值:2.2
div(11,5.0)
div(11.0,5)
E
encodeUriComponent
通过将 URL 不安全字符替换为转义字符来返回字符串的统一资源标识符 (URI) 编码版本。 请考虑使用 uriComponent() 而非 encodeUriComponent()
。 虽然这两个函数的工作方式相同,但首选 uriComponent()
。
注意
Azure 逻辑应用会自动或隐式执行 base64 编码和解码,因此你无需使用编码和解码函数手动执行这些转换。 但是,如果你仍然在设计器中使用这些函数,则可能会在设计器中遇到意外的呈现行为。 这些行为仅影响函数的可见性,而不影响其效果,除非你编辑函数的参数值,这样会从代码中删除函数及其效果。 有关详细信息,请参阅 Base64 编码和解码。
encodeUriComponent('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 要转换为 URI 编码格式的字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<encoded-uri> | 字符串 | 带有转义字符的 URI 编码字符串 |
示例
此示例创建以下字符串的 URI 编码版本:
encodeUriComponent('https://contoso.com')
并返回以下结果:"https%3A%2F%2Fcontoso.com"
empty
检查集合是否为空。 当集合为空时返回 true,不为空时返回 false。
empty('<collection>')
empty([<collection>])
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<collection> | 是 | 字符串、数组或对象 | 要检查的集合 |
返回值 | 类型 | 说明 |
---|---|---|
true 或 false | Boolean | 当集合为空时返回 true。 不为空时返回 false。 |
示例
这些示例检查指定的集合是否为空:
empty('')
empty('abc')
并返回以下结果:
- 第一个示例:传递一个空字符串,所以此函数返回
true
。 - 第二个示例:传递字符串“abc”,所以此函数返回
false
。
endsWith
检查字符串是否以特定的子字符串结尾。 当找到该子字符串时返回 true,找不到时返回 false。 此函数不区分大小写。
endsWith('<text>', '<searchText>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<text> | 是 | 字符串 | 要检查的字符串 |
<searchText> | 是 | 字符串 | 要查找的结尾子字符串 |
返回值 | 类型 | 说明 |
---|---|---|
true 或 false | Boolean | 当找到结尾子字符串时返回 true。 找不到时返回 false。 |
示例 1
此示例检查“hello world”字符串是否以“world”字符串结尾:
endsWith('hello world', 'world')
并返回以下结果:true
示例 2
此示例检查“hello world”字符串是否以“universe”字符串结尾:
endsWith('hello world', 'universe')
并返回以下结果:false
equals
检查两个值、表达式或对象是否相等。 当两者相等时返回 true,两者不相等时返回 false。
equals('<object1>', '<object2>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<object1>, <object2> | 是 | 各种 | 要比较的值、表达式或对象 |
返回值 | 类型 | 说明 |
---|---|---|
true 或 false | Boolean | 当两者相等时返回 true。 不相等时返回 false。 |
示例
这些示例检查指定的输入是否相等。
equals(true, 1)
equals('abc', 'abcd')
并返回以下结果:
- 第一个示例:两个值相等,所以此函数返回
true
。 - 第二个示例:两个值不相等,所以此函数返回
false
。
F
first
返回字符串或数组中的第一项。
first('<collection>')
first([<collection>])
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<collection> | 是 | 字符串或数组 | 要在其中查找第一项的集合 |
返回值 | 类型 | 说明 |
---|---|---|
<first-collection-item> | 任意 | 集合中的第一项 |
示例
这些示例查找以下集合中的第一项:
first('hello')
first(createArray(0, 1, 2))
并返回以下结果:
- 第一个示例:
"h"
- 第二个示例:
0
FLOAT
将浮点数的字符串版本转换为实际的浮点数。 仅当将自定义参数传递给应用(例如,逻辑应用工作流或 Power Automate 流)时,才使用此函数。 若要转换以区域设置特定格式表示的浮点字符串,可以选择指定 RFC 4646 区域设置代码。
float('<value>', '<locale>'?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 包含要转换的有效浮点数的字符串。 最小值和最大值与 float 数据类型的限制相同。 |
<locale> | 否 | 字符串 | 要使用的 RFC 4646 区域设置代码。 如果未指定,则使用默认区域设置。 如果区域设置并非有效值,则会生成错误,指出提供区域设置无效或没有关联的区域设置。 |
返回值 | 类型 | 说明 |
---|---|---|
<float-value> | Float | 指定字符串的浮点数。 最小值和最大值与 float 数据类型的限制相同。 |
示例 1
此示例创建以下浮点数的字符串版本:
float('10,000.333')
并返回以下结果:10000.333
示例 2
此示例为德式浮点数创建以下字符串版本:
float('10.000,333', 'de-DE')
并返回以下结果:10000.333
formatDateTime
以指定的格式返回时间戳。
formatDateTime('<timestamp>', '<format>'?, '<locale>'?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
<format> | 否 | String | 一个数字格式字符串,它是单个格式说明符或自定义格式模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 |
<locale> | 否 | 字符串 | 要使用的区域设置。 如果未指定,则默认值为 en-us 。 如果 locale 不是有效值,则会生成错误。 |
返回值 | 类型 | 说明 |
---|---|---|
<reformatted-timestamp> | 字符串 | 以指定格式和区域设置更新的时间戳(如果已指定)。 |
示例
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
返回与操作的“表单数据”或“表单编码”输出中的键名称匹配的值组成的数组。
formDataMultiValues('<actionName>', '<key>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<actionName> | 是 | String | 其输出中具有所需键值的操作 |
<key> | 是 | String | 需要获取其值的键的名称 |
返回值 | 类型 | 说明 |
---|---|---|
[<array-with-key-values>] | Array | 包含与指定键匹配的所有值的数组 |
示例
此示例基于指定操作的表单数据或表单编码输出中的“Subject”键的值创建数组。
formDataMultiValues('Send_an_email', 'Subject')
并在数组中返回主题文本,例如:["Hello world"]
formDataValue
返回与操作的“表单数据”或“表单编码”输出中的键名称匹配的单个值。 如果此函数找到多个匹配项,此函数将引发错误。
formDataValue('<actionName>', '<key>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<actionName> | 是 | String | 其输出中具有所需键值的操作 |
<key> | 是 | String | 需要获取其值的键的名称 |
返回值 | 类型 | 说明 |
---|---|---|
<key-value> | String | 指定的键中的值 |
示例
此示例基于指定操作的表单数据或表单编码输出中的“Subject”键的值创建字符串。
formDataValue('Send_an_email', 'Subject')
并以字符串形式返回主题文本,例如:"Hello world"
formatNumber
根据指定的格式以字符串形式返回一个数字。
formatNumber(<number>, <format>, <locale>?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<number> | 是 | 整数或双精度 | 要设置格式的值。 |
<format> | 是 | String | 一个复合格式字符串,指定要使用的格式。 有关支持的数字格式字符串,请参阅 number.ToString(<format>, <locale>) 支持的标准数字格式字符串。 |
<locale> | 否 | String | 要使用的受 number.ToString(<format>, <locale>) 支持的区域设置。 如果未指定,则默认值为 en-us 。 如果 locale 不是有效值,则会生成错误。 |
返回值 | 类型 | 说明 |
---|---|---|
<formatted-number> | String | 以字符串形式指定的数字,采用指定的格式。 可将此返回值强制转换为 int 或 float 。 |
示例 1
假设你要设置数字 1234567890
的格式。 此示例将该数字的格式设置为字符串“1,234,567,890.00”。
formatNumber(1234567890, '0,0.00', 'en-us')
示例 2
假设你要设置数字 1234567890
的格式。 此示例将该数字的格式设置为字符串“1.234.567.890,00”。
formatNumber(1234567890, '0,0.00', 'is-is')
示例 3
假设你要设置数字 17.35
的格式。 此示例将该数字的格式设置为字符串“$17.35”。
formatNumber(17.35, 'C2')
示例 4
假设你要设置数字 17.35
的格式。 此示例将该数字的格式设置为字符串“17,35 kr”。
formatNumber(17.35, 'C2', 'is-is')
G
getFutureTime
返回当前时间戳加上指定的时间单位。
getFutureTime(<interval>, <timeUnit>, <format>?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<间隔> | 是 | Integer | 要添加的时间单位数 |
<timeUnit> | 是 | 字符串 | 间隔使用的时间单位:“秒”、“分钟”、“小时”、“日”、“周”、“月”、“年” |
<format> | 否 | 字符串 | 单一格式的说明符或自定义格式的模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 如果格式并非有效值,则会生成错误,指出提供的格式无效,且必须是数字格式字符串。 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-timestamp> | 字符串 | 当前时间戳加上指定的时间单位数 |
示例 1
假设当前时间戳是“2018-03-01T00:00:00.0000000Z”。 此示例将 5 天加到该时间戳:
getFutureTime(5, 'Day')
并返回以下结果:"2018-03-06T00:00:00.0000000Z"
示例 2
假设当前时间戳是“2018-03-01T00:00:00.0000000Z”。 此示例加上 5 天,并将结果转换为“D”格式:
getFutureTime(5, 'Day', 'D')
并返回以下结果:"Tuesday, March 6, 2018"
getPastTime
返回当前时间戳减去指定的时间单位。
getPastTime(<interval>, <timeUnit>, <format>?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<间隔> | 是 | Integer | 要减去的指定时间单位数 |
<timeUnit> | 是 | 字符串 | 间隔使用的时间单位:“秒”、“分钟”、“小时”、“日”、“周”、“月”、“年” |
<format> | 否 | 字符串 | 单一格式的说明符或自定义格式的模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 如果格式并非有效值,则会生成错误,指出提供的格式无效,且必须是数字格式字符串。 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-timestamp> | 字符串 | 当前时间戳减去指定的时间单位数 |
示例 1
假设当前时间戳是“2018-02-01T00:00:00.0000000Z”。 此示例从该时间戳减去 5 天:
getPastTime(5, 'Day')
并返回以下结果:"2018-01-27T00:00:00.0000000Z"
示例 2
假设当前时间戳是“2018-02-01T00:00:00.0000000Z”。 此示例减去 5 天,并将结果转换为“D”格式:
getPastTime(5, 'Day', 'D')
并返回以下结果:"Saturday, January 27, 2018"
greater
检查第一个值是否大于第二个值。 如果第一个值大,则返回 true;如果第一个值小,则返回 false。
greater(<value>, <compareTo>)
greater('<value>', '<compareTo>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 整数、浮点数或字符串 | 要检查是否大于第二个值的第一个值。 |
<compareTo> | 是 | 分别为整数、浮点数或字符串 | 比较值 |
返回值 | 类型 | 说明 |
---|---|---|
true 或 false | Boolean | 当第一个值大于第二个值时返回 true。 当第一个值等于或小于第二个值时返回 false。 |
示例
这些示例检查第一个值是否大于第二个值:
greater(10, 5)
greater('apple', 'banana')
并返回以下结果:
- 第一个示例:
true
- 第二个示例:
false
greaterOrEquals
检查第一个值是否大于或等于第二个值。 当第一个值大于或等于第二个值时返回 true,当第一个值小于第二个值时返回 false。
greaterOrEquals(<value>, <compareTo>)
greaterOrEquals('<value>', '<compareTo>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 整数、浮点数或字符串 | 要检查是否大于或等于第二个值的第一个值 |
<compareTo> | 是 | 分别为整数、浮点数或字符串 | 比较值 |
返回值 | 类型 | 说明 |
---|---|---|
true 或 false | Boolean | 当第一个值大于或等于第二个值时返回 true。 当第一个值小于第二个值时返回 false。 |
示例
这些示例检查第一个值是否大于或等于第二个值:
greaterOrEquals(5, 5)
greaterOrEquals('apple', 'banana')
并返回以下结果:
- 第一个示例:
true
- 第二个示例:
false
guid
生成一个字符串形式的全局唯一标识符 (GUID),例如“c2ecc88d-88c8-4096-912c-d6f2e2b138ce”:
guid()
此外,还可以为 GUID 指定与默认格式“D”(由连字符分隔的 32 位数字)不同的格式。
guid('<format>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<format> | 否 | 字符串 | 表示返回的 GUID 的单一格式说明符。 默认情况下,格式为“D”,但可以使用“N”、“D”、“B”、“P”或“X”。 |
返回值 | 类型 | 说明 |
---|---|---|
<GUID-value> | 字符串 | 随机生成的 GUID |
示例
此示例生成相同的 GUID,但它是 32 位的,以连字符分隔并括在括号中:
guid('P')
并返回以下结果:"(c2ecc88d-88c8-4096-912c-d6f2e2b138ce)"
I
if
检查表达式为 true 还是 false。 根据结果返回指定的值。 从左到右评估参数。
if(<expression>, <valueIfTrue>, <valueIfFalse>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<expression> | 是 | Boolean | 要检查的表达式 |
<valueIfTrue> | 是 | 任意 | 当表达式为 true 时要返回的值 |
<valueIfFalse> | 是 | 任意 | 当表达式为 false 时要返回的值 |
返回值 | 类型 | 说明 |
---|---|---|
<specified-return-value> | 任意 | 根据表达式为 true 或 false 返回的指定值 |
示例
此示例返回 "yes"
,因为指定的表达式返回 true。
否则,此示例返回 "no"
:
if(equals(1, 1), 'yes', 'no')
indexOf
返回子字符串的起始位置或索引值。 此函数不区分大小写,并且索引从数字 0 开始。
indexOf('<text>', '<searchText>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<text> | 是 | 字符串 | 包含要查找的子字符串的字符串 |
<searchText> | 是 | 字符串 | 要查找的子字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<index-value> | Integer | 指定的子字符串的起始位置或索引值。 如果未找到该字符串,则返回数字 -1。 |
示例
此示例查找“hello world”字符串中的“world”子字符串的起始索引值:
indexOf('hello world', 'world')
并返回以下结果:6
int
将整数的字符串版本转换为实际整数。
int('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | String | 要转换的整数的字符串版本。 最小值和最大值与 integer 数据类型的限制相同。 |
返回值 | 类型 | 说明 |
---|---|---|
<integer-result> | Integer | 指定字符串的整数版本。 最小值和最大值与 integer 数据类型的限制相同。 |
示例
此示例创建字符串“10”的整数版本:
int('10')
并返回以下结果:10
isFloat
返回一个布尔值,该值指示字符串是否为浮点数。 默认情况下,此函数使用浮点格式的固定区域性。 若要标识以其他区域设置特定格式表示的浮点数,可以选择指定 RFC 4646 区域设置代码。
isFloat('<string>', '<locale>'?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 要检查的输入字符串 |
<locale> | 否 | 字符串 | 要使用的 RFC 4646 区域设置代码 |
返回值 | 类型 | 说明 |
---|---|---|
<boolean-result> | Boolean | 指示字符串是否为浮点数的布尔值 |
示例 1
此示例检查字符串是否为固定区域性中的浮点数:
isFloat('10,000.00')
并返回以下结果:true
示例 2
此示例检查字符串是否为德语区域设置中的浮点数:
isFloat('10.000,00', 'de-DE')
并返回以下结果:true
isInt
返回一个布尔值,该值指示字符串是否为整数。
isInt('<string>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<字符串> | 是 | 字符串 | 要检查的输入字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<boolean-result> | Boolean | 指示字符串是否为整数的布尔值 |
示例
此示例检查字符串是否为整数:
isInt('10')
并返回以下结果:true
item
当在针对数组的重复操作中使用时,返回在操作的当前迭代过程中数组中的当前项。 还可以获取该项的属性中的值。
item()
返回值 | 类型 | 说明 |
---|---|---|
<current-array-item> | 任意 | 返回在操作的当前迭代中数组中的当前项 |
示例
此示例在 for-each 循环的当前迭代中从“Send_an_email”操作的当前消息中获取 body
元素:
item().body
items
返回 for-each 循环中每个周期的当前项。 请在 for-each 循环中使用此函数。
items('<loopName>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<loopName> | 是 | String | for-each 循环的名称 |
返回值 | 类型 | 说明 |
---|---|---|
<item> | 任意 | 指定的 for-each 循环中当前周期中的项 |
示例
此示例获取指定 for-each 循环的当前项:
items('myForEachLoopName')
iterationIndexes
位于 Until 循环中时,返回当前迭代的索引值。 可以在嵌套式的 Until 循环中使用该函数。
iterationIndexes('<loopName>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<loopName> | 是 | String | Until 循环的名称 |
返回值 | 类型 | 说明 |
---|---|---|
<index> | Integer | 指定的 Until 循环中当前迭代的索引值 |
示例
此示例创建一个计数器变量,在 Until 循环中每迭代一次该变量就会递增 1,直至计数器值达到 5。 此示例还创建一个变量,用于跟踪每次迭代的当前索引。 在 Until 循环的每次迭代时,此示例会递增计数器值,然后将该值指定给当前索引值,然后再递增计数器值。 在此循环中,此示例使用 iterationIndexes
函数引用当前迭代索引:
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
json
返回字符串或 XML 的 JavaScript 对象表示法 (JSON) 类型值、对象或对象数组。
json('<value>')
json(xml('value'))
重要
如果不提供一个用于定义输出结构的 XML 架构,该函数可能会返回其结构与预期格式大不相同的结果,具体取决于输入。
这种行为使得此函数不适合用于输出必须符合妥善定义的协定的情况,例如,在业务关键型系统或解决方案中。
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串或 XML | 要转换的字符串或 XML |
返回值 | 类型 | 说明 |
---|---|---|
<JSON-result> | JSON 本机类型、对象或数组 | 来自输入字符串或 XML 的 JSON 本机类型值、对象或对象数组。 - 如果传入的 XML 在根元素中具有单个子元素,则该函数将返回该子元素的单个 JSON 对象。 - 如果传入的 XML 在根元素中具有多个子元素,则该函数将返回一个数组,其中包含这些子元素的 JSON 对象。 - 如果字符串为 null,则该函数将返回空对象。 |
示例 1
此示例将以下字符串转换为 JSON 值:
json('[1, 2, 3]')
并返回以下结果:[1, 2, 3]
示例 2
此示例将以下字符串转换为 JSON:
json('{"fullName": "Sophia Owen"}')
并返回以下结果:
{
"fullName": "Sophia Owen"
}
示例 3
此示例使用 json()
和 xml()
函数将根元素中具有单个子元素的 XML 转换为该子元素的名为 person
的 JSON 对象:
json(xml('<?xml version="1.0"?> <root> <person id="1"> <name>Sophia Owen</name> <occupation>Engineer</occupation> </person> </root>'))
并返回以下结果:
{
"?xml": {
"@version": "1.0"
},
"root": {
"person": {
"@id": "1",
"name": "Sophia Owen",
"occupation": "Engineer"
}
}
}
示例 4
此示例使用 json()
和 xml()
函数将根元素中具有多个子元素的 XML 转换为一个数组,其中包含这些子元素的名为 person
的 JSON 对象:
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>'))
并返回以下结果:
{
"?xml": {
"@version": "1.0"
},
"root": {
"person": [
{
"@id": "1",
"name": "Sophia Owen",
"occupation": "Engineer"
},
{
"@id": "2",
"name": "John Doe",
"occupation": "Engineer"
}
]
}
}
intersection
返回其中仅包含指定集合的共有项的一个集合。 某个项必须出现在传递给此函数的所有集合中才会出现在结果中。 如果一个或多个项具有相同的名称,则具有该名称的最后一项将出现在结果中。
intersection([<collection1>], [<collection2>], ...)
intersection('<collection1>', '<collection2>', ...)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<collection1>, <collection2>, ... | 是 | 数组或对象,但不能为两者 | 仅需从中获取共有项的各个集合 |
返回值 | 类型 | 说明 |
---|---|---|
<common-items> | 分别为数组或对象 | 其中仅包含指定集合的共有项的一个集合 |
示例
此示例查找以下数组中的共有项:
intersection(createArray(1, 2, 3), createArray(101, 2, 1, 10), createArray(6, 8, 1, 2))
并返回“仅”包含这些项的数组:[1, 2]
join
返回一个字符串,它包含某个数组中的所有项并且以分隔符分隔每个字符。
join([<collection>], '<delimiter>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<collection> | 是 | Array | 包含要联接的项的数组 |
<delimiter> | 是 | 字符串 | 出现在结果字符串中的每个字符之间的分隔符 |
返回值 | 类型 | 说明 |
---|---|---|
<char1><delimiter><char2><delimiter>... | String | 基于指定数组中的所有项创建的结果字符串。 注意:结果的长度不得超过 104,857,600 个字符。 |
示例
此示例基于以下数组中的所有项创建字符串,并且以指定的字符作为分隔符:
join(createArray('a', 'b', 'c'), '.')
并返回以下结果:"a.b.c"
L
last
返回集合中的最后一个项。
last('<collection>')
last([<collection>])
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<collection> | 是 | 字符串或数组 | 要在其中查找最后一项的集合 |
返回值 | 类型 | 说明 |
---|---|---|
<last-collection-item> | 分别为字符串或数组 | 集合中的最后一项 |
示例
这些示例查找以下集合中的最后一项:
last('abcd')
last(createArray(0, 1, 2, 3))
并返回以下结果:
- 第一个示例:
"d"
- 第二个示例:
3
lastIndexOf
返回最后一次出现的子字符串的起始位置或索引值。 此函数不区分大小写,并且索引从数字 0 开始。
lastIndexOf('<text>', '<searchText>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<text> | 是 | 字符串 | 包含要查找的子字符串的字符串 |
<searchText> | 是 | 字符串 | 要查找的子字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<ending-index-value> | Integer | 最后一次出现的指定子字符串的起始位置或索引值。 |
如果字符串或子字符串值为空,则会出现以下行为:
如果只有字符串值为空,该函数将返回
-1
。如果字符串和子字符串值均为空,该函数将返回
0
。如果只有子字符串值为空,该函数将返回字符串长度减 1 后的值。
示例
此示例查找 hello world hello world
字符串中最后一次出现的 world
子字符串的起始索引值。 返回的结果为 18
:
lastIndexOf('hello world hello world', 'world')
此示例缺少子字符串参数,将返回 22
值,因为输入字符串 (23
) 减 1 后的值大于 0。
lastIndexOf('hello world hello world', '')
length
返回集合中的项数。
length('<collection>')
length([<collection>])
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<collection> | 是 | 字符串或数组 | 包含要计数的项的集合 |
返回值 | 类型 | 说明 |
---|---|---|
<length-or-count> | Integer | 集合中的项数 |
示例
这些示例对以下集合中的项数进行计数:
length('abcd')
length(createArray(0, 1, 2, 3))
并返回以下结果:4
less
检查第一个值是否小于第二个值。 如果第一个值小,则返回 true;如果第一个值大,则返回 false。
less(<value>, <compareTo>)
less('<value>', '<compareTo>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 整数、浮点数或字符串 | 要检查是否小于第二个值的第一个值 |
<compareTo> | 是 | 分别为整数、浮点数或字符串 | 比较项 |
返回值 | 类型 | 说明 |
---|---|---|
true 或 false | Boolean | 当第一个值小于第二个值时返回 true。 当第一个值等于或大于第二个值时返回 false。 |
示例
这些示例检查第一个值是否小于第二个值。
less(5, 10)
less('banana', 'apple')
并返回以下结果:
- 第一个示例:
true
- 第二个示例:
false
lessOrEquals
检查第一个值是否小于或等于第二个值。 当第一个值小于或等于第二个值时返回 true,当第一个值大时返回 false。
lessOrEquals(<value>, <compareTo>)
lessOrEquals('<value>', '<compareTo>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 整数、浮点数或字符串 | 要检查是否小于或等于第二个值的第一个值 |
<compareTo> | 是 | 分别为整数、浮点数或字符串 | 比较项 |
返回值 | 类型 | 说明 |
---|---|---|
true 或 false | Boolean | 当第一个值小于或等于第二个值时返回 true。 当第一个值大于第二个值时返回 false。 |
示例
这些示例检查第一个值是否小于或等于第二个值。
lessOrEquals(10, 10)
lessOrEquals('apply', 'apple')
并返回以下结果:
- 第一个示例:
true
- 第二个示例:
false
listCallbackUrl
返回调用某个触发器或操作的“回调 URL”。 此函数仅对适用于 HttpWebhook 和 ApiConnectionWebhook 连接器类型的触发器和操作起作用,对 Manual、Recurrence、HTTP 和 APIConnection 类型不起作用。
listCallbackUrl()
返回值 | 类型 | 说明 |
---|---|---|
<callback-URL> | String | 触发器或操作的回调 URL |
示例
此示例显示了此函数可能会返回的示例回调 URL:
"https://prod-01.chinanorth.logic.azure.cn:443/workflows/<*workflow-ID*>/triggers/manual/run?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=<*signature-ID*>"
M
max
返回列表中或包括两端数字在内的数组中的最大值。
max(<number1>, <number2>, ...)
max([<number1>, <number2>, ...])
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<number1>, <number2>, ... | 是 | 整数、浮点数或两者 | 需要从中获取最大值的数字集 |
[<number1>, <number2>, ...] | 是 | 数组 - 整数、浮点数或两者 | 需要从中获取最大值的数字数组 |
返回值 | 类型 | 说明 |
---|---|---|
<max-value> | 整数或浮点数 | 指定的数组或数字集中的最大值 |
示例
这些示例获取数字集和数组中的最大值:
max(1, 2, 3)
max(createArray(1, 2, 3))
并返回以下结果:3
min
返回一组数字或数组中的最小值。
min(<number1>, <number2>, ...)
min([<number1>, <number2>, ...])
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<number1>, <number2>, ... | 是 | 整数、浮点数或两者 | 需要从中获取最小值的数字集 |
[<number1>, <number2>, ...] | 是 | 数组 - 整数、浮点数或两者 | 需要从中获取最小值的数字数组 |
返回值 | 类型 | 说明 |
---|---|---|
<min-value> | 整数或浮点数 | 指定的数字集或指定的数组中的最小值 |
示例
这些示例获取数字集和数组中的最小值:
min(1, 2, 3)
min(createArray(1, 2, 3))
并返回以下结果:1
mod
返回将两个数字相除后的余数。 若要获取整数结果,请参阅 div()。
mod(<dividend>, <divisor>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<dividend> | 是 | 整数或浮点数 | 要用作 divisor 的被除数的数字 |
<divisor> | 是 | 整数或浮点数 | 除以被除数的数字,但不能为 0 |
返回值 | 类型 | 说明 |
---|---|---|
<modulo-result> | 整数或浮点数 | 将第一个数字除以第二个数字后得到的余数 |
示例 1
此示例将第一个数字除以第二个数字:
mod(3, 2)
并返回以下结果:1
示例 2
此示例表明,如果一个值或两个值为负,则结果与被除数的符号匹配:
mod(-5, 2)
mod(4, -3)
此示例返回以下结果:
- 第一个示例:
-1
- 第二个示例:
1
mul
返回将两个数字相乘得到的乘积。
mul(<multiplicand1>, <multiplicand2>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<multiplicand1> | 是 | 整数或浮点数 | 要与 multiplicand2 相乘的数字 |
<multiplicand2> | 是 | 整数或浮点数 | 要与 multiplicand1 相乘的数字 |
返回值 | 类型 | 说明 |
---|---|---|
<product-result> | 整数或浮点数 | 将第一个数字乘以第二个数字后得到的乘积 |
示例
这些示例将第一个数字乘以第二个数字:
mul(1, 2)
mul(1.5, 2)
并返回以下结果:
- 第一个示例:
2
- 第二个示例:
3
multipartBody
返回具有多个部分的操作输出中某个特定部分的正文。
multipartBody('<actionName>', <index>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<actionName> | 是 | String | 具有多部分输出的操作的名称 |
<index> | 是 | Integer | 所需部分的索引值 |
返回值 | 类型 | 说明 |
---|---|---|
<body> | String | 指定部分的正文 |
N
not
检查表达式是否为 false。 当表达式为 false 时返回 true,当表达式为 true 时返回 false。
not(<expression>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<expression> | 是 | Boolean | 要检查的表达式 |
返回值 | 类型 | 说明 |
---|---|---|
true 或 false | Boolean | 当表达式为 false 时返回 true。 当表达式为 true 时返回 false。 |
示例 1
这些示例检查指定的表达式是否为 false:
not(false)
not(true)
并返回以下结果:
- 第一个示例:表达式为 false,所以此函数返回
true
。 - 第二个示例:表达式为 true,所以此函数返回
false
。
示例 2
这些示例检查指定的表达式是否为 false:
not(equals(1, 2))
not(equals(1, 1))
并返回以下结果:
- 第一个示例:表达式为 false,所以此函数返回
true
。 - 第二个示例:表达式为 true,所以此函数返回
false
。
nthIndexOf
返回子字符串第 n 次出现在字符串中的起始位置或索引值。
nthIndexOf('<text>', '<searchText>', <occurrence>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<text> | 是 | 字符串 | 包含要查找的子字符串的字符串 |
<searchText> | 是 | 字符串 | 要查找的子字符串 |
<发生次数> | 是 | Integer | 一个数字,指定要查找的子字符串的第 n 次出现。 如果发生次数为负值,请从末尾开始搜索。 |
返回值 | 类型 | 说明 |
---|---|---|
<index-value> | Integer | 第 n 此出现的指定子字符串的起始位置或索引值。 如果未找到子字符串或该子字符串出现的次数少于 n 次,则返回 -1 。 |
示例
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
或
检查是否至少一个表达式为 true。 当至少一个表达式为 true 时返回 true,当所有表达式均为 false 时返回 false。
or(<expression1>, <expression2>, ...)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<expression1>、<expression2>,... | 是 | Boolean | 要检查的表达式 |
返回值 | 类型 | 说明 |
---|---|---|
true 或 false | Boolean | 当至少一个表达式为 true 时返回 true。 当所有表达式均为 false 时返回 false。 |
示例 1
这些示例检查是否至少一个表达式为 true:
or(true, false)
or(false, false)
并返回以下结果:
- 第一个示例:至少一个表达式为 true,所以此函数返回
true
。 - 第二个示例:两个表达式均为 false,所以此函数返回
false
。
示例 2
这些示例检查是否至少一个表达式为 true:
or(equals(1, 1), equals(1, 2))
or(equals(1, 2), equals(1, 3))
并返回以下结果:
- 第一个示例:至少一个表达式为 true,所以此函数返回
true
。 - 第二个示例:两个表达式均为 false,所以此函数返回
false
。
outputs
返回操作在运行时的输出。
outputs('<actionName>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<actionName> | 是 | String | 所需的操作输出的名称 |
返回值 | 类型 | 说明 |
---|---|---|
<output> | String | 指定操作的输出 |
示例
此示例从 X 操作 Get user
获取输出:
outputs('Get_user')
并返回以下结果:
{
"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.chinacloudsites.cn",
"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
parameters
返回工作流定义中描述的参数的值。
parameters('<parameterName>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<parameterName> | 是 | String | 需要获取其值的参数的名称。 |
返回值 | 类型 | 说明 |
---|---|---|
<parameter-value> | 任意 | 指定的参数的值 |
示例
假设具有以下 JSON 值:
{
"fullName": "Sophia Owen"
}
此示例获取指定参数的值:
parameters('fullName')
并返回以下结果:"Sophia Owen"
parseDateTime
从包含时间戳的字符串中返回时间戳。
parseDateTime('<timestamp>', '<locale>'?, '<format>'?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
<locale> | 否 | 字符串 | 要使用的区域设置。 如果未指定,则默认区域设置为 en-us 。 如果 locale 不是有效值,则会生成错误。 |
<format> | 否 | String | 一个数字格式字符串,它是单个格式说明符或自定义格式模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 如果未指定格式,请尝试使用与所提供的区域设置兼容的多种格式进行分析。 如果格式不是有效值,则会生成错误。 |
返回值 | 类型 | 说明 |
---|---|---|
<parsed-timestamp> | 字符串 | 分析时间戳为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK) 格式,这符合 ISO 8601 标准并保留了时区信息。 |
示例
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
rand
返回指定范围(仅包括起端在内)中的一个随机整数。
rand(<minValue>, <maxValue>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<minValue> | 是 | Integer | 范围中的最小整数 |
<maxValue> | 是 | Integer | 此函数可以返回的范围中的最大整数之后的整数 |
返回值 | 类型 | 说明 |
---|---|---|
<random-result> | Integer | 从指定范围中返回的随机整数 |
示例
此示例从指定范围内获取一个随机整数,不包括最大值:
rand(1, 5)
并返回下列数字之一作为结果:1
、2
、3
或 4
range
返回以指定整数开头的一个整数数组。
range(<startIndex>, <count>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<startIndex> | 是 | Integer | 作为数组开头的第一项的整数值 |
<count> | 是 | Integer | 数组中的整数个数。 count 参数值必须是不超过 100,000 的正整数。 注意: startIndex 和 count 值之和不得超过 2,147,483,647。 |
返回值 | 类型 | 说明 |
---|---|---|
[<range-result>] | Array | 从指定索引开始的整数组成的数组 |
示例
此示例创建一个整数数组,从指定索引开始,并包含指定数目的整数:
range(1, 4)
并返回以下结果:[1, 2, 3, 4]
removeProperty
从对象中删除属性,并返回更新后的对象。 如果尝试删除的属性不存在,此函数会返回原始对象。
removeProperty(<object>, '<property>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<object> | 是 | 对象 | 要从中删除属性的 JSON 对象 |
<property> | 是 | String | 要删除的属性的名称 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-object> | 对象 | 不具有指定属性的更新后 JSON 对象 |
若要从现有属性中删除子属性,请使用以下语法:
removeProperty(<object>['<parent-property>'], '<child-property>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<object> | 是 | 对象 | 要删除其属性的 JSON 对象 |
<parent-property> | 是 | String | 要删除其子属性的父属性的名称 |
<child-property> | 是 | String | 要删除的子属性的名称 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-object> | 对象 | 删除了其子属性的已更新 JSON 对象 |
示例 1
此示例从 JSON 对象(此对象通过 JSON() 函数从字符串转换为 JSON)中删除 middleName
属性,并返回更新后的对象:
removeProperty(json('{ "firstName": "Sophia", "middleName": "Anne", "surName": "Owen" }'), 'middleName')
下面是当前的 JSON 对象:
{
"firstName": "Sophia",
"middleName": "Anne",
"surName": "Owen"
}
下面是已更新的 JSON 对象:
{
"firstName": "Sophia",
"surName": "Owen"
}
示例 2
此示例从 JSON 对象(此对象通过 JSON() 函数从字符串转换为 JSON)中的 customerName
父属性中删除 middleName
子属性,并返回更新后的对象:
removeProperty(json('{ "customerName": { "firstName": "Sophia", "middleName": "Anne", "surName": "Owen" } }')['customerName'], 'middleName')
下面是当前的 JSON 对象:
{
"customerName": {
"firstName": "Sophia",
"middleName": "Anne",
"surName": "Owen"
}
}
下面是已更新的 JSON 对象:
{
"customerName": {
"firstName": "Sophia",
"surName": "Owen"
}
}
replace
将子字符串替换为指定字符串,并返回结果字符串。 此函数区分大小写。
replace('<text>', '<oldText>', '<newText>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<text> | 是 | 字符串 | 包含要替换的子字符串的字符串 |
<oldText> | 是 | 字符串 | 要替换的子字符串 |
<newText> | 是 | 字符串 | 替换字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-text> | 字符串 | 替换子字符串后得到的更新后字符串 如果未找到子字符串,则返回原始字符串。 |
示例
此示例查找“the old string”中的“old”子字符串并将“old”替换为“new”:
replace('the old string', 'old', 'new')
并返回以下结果:"the new string"
result
返回指定的有范围操作(例如 For_each
、Until
或 Scope
操作)中顶级操作的结果。 result()
函数接受单个参数(范围的名称),并返回一个数组,其中包含该范围内的顶级操作中的信息。 这些操作对象包含的特性(例如操作的开始时间、结束时间、状态、输入、相关 ID 和输出)与 actions()
函数返回的特性相同。
注意
此函数只返回有范围操作的第一级操作中的信息,而不返回更深层嵌套操作(例如切换或条件操作)中的信息。
例如,可以使用此函数获取失败操作的结果,以便可以诊断和处理异常。 有关详细信息,请参阅获取失败的上下文和结果。
result('<scopedActionName>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<scopedActionName> | 是 | 字符串 | 有范围操作的名称,其输入和输出来自该范围内的顶级操作。 |
返回值 | 类型 | 说明 |
---|---|---|
<array-object> | 数组对象 | 一个数组,其中包含指定范围内每个顶级操作中的输入和输出数组 |
示例
此示例通过在 Compose
操作中使用 result()
函数,返回 For_each
循环中 HTTP 操作的每次迭代的输入和输出:
{
"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"
}
}
}
下面是示例返回的数组可能的外观,其中的外部 outputs
对象包含 For_each
操作中每个操作迭代的输入和输出。
[
{
"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
反转集合中项的顺序。 将此函数与 sort() 配合使用时,可以按降序对集合进行排序。
reverse([<collection>])
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<collection> | 是 | Array | 要反转的集合 |
返回值 | 类型 | 说明 |
---|---|---|
[<updated-collection>] | Array | 已反转的集合 |
示例
此示例对整数数组进行反转:
reverse(createArray(0, 1, 2, 3))
并返回此数组:[3,2,1,0]
S
setProperty
设置 JSON 对象的属性值并返回更新的对象。 如果尝试设置的属性不存在,则会为对象添加该属性。 若要添加新属性,请使用 addProperty() 函数。
setProperty(<object>, '<property>', <value>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<object> | 是 | 对象 | 要设置其属性的 JSON 对象 |
<property> | 是 | String | 要设置的现有属性或新属性的名称 |
<value> | 是 | 任意 | 要为指定属性设置的值 |
若要在子对象中设置子属性,请改用嵌套式 setProperty()
调用。 否则,函数仅返回子对象作为输出。
setProperty(<object>, '<parent-property>', setProperty(<object>['parentProperty'], '<child-property>', <value>))
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<object> | 是 | 对象 | 要设置其属性的 JSON 对象 |
<parent-property> | 是 | String | 要设置其子属性的父属性的名称 |
<child-property> | 是 | String | 要设置的子属性的名称 |
<value> | 是 | 任意 | 要为指定属性设置的值 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-object> | 对象 | 设置了其属性的更新后 JSON 对象 |
示例 1
此示例在 JSON 对象中设置 surName
属性,可通过 JSON() 函数将其从字符串转换为 JSON。 该函数将指定的值分配给属性,并返回更新后的对象:
setProperty(json('{ "firstName": "Sophia", "surName": "Owen" }'), 'surName', 'Hartnett')
下面是当前的 JSON 对象:
{
"firstName": "Sophia",
"surName": "Owen"
}
下面是已更新的 JSON 对象:
{
"firstName": "Sophia",
"surName": "Hartnett"
}
示例 2
此示例为 JSON 对象中的 customerName
父属性设置 surName
子属性,可通过 JSON() 函数将其从字符串转换为 JSON。 该函数将指定的值分配给属性,并返回更新后的对象:
setProperty(json('{ "customerName": { "firstName": "Sophia", "surName": "Owen" } }'), 'customerName', setProperty(json('{ "customerName": { "firstName": "Sophia", "surName": "Owen" } }')['customerName'], 'surName', 'Hartnett'))
下面是当前的 JSON 对象:
{
"customerName": {
"firstName": "Sophie",
"surName": "Owen"
}
}
下面是已更新的 JSON 对象:
{
"customerName": {
"firstName": "Sophie",
"surName": "Hartnett"
}
}
skip
删除集合开头的项,并返回所有其他项。
skip([<collection>], <count>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<collection> | 是 | Array | 要删除其项的集合 |
<count> | 是 | Integer | 要从开头删除的项数(一个正整数) |
返回值 | 类型 | 说明 |
---|---|---|
[<updated-collection>] | Array | 删除指定项后得到的更新后的集合 |
示例
此示例从指定数组的开头删除一个项(数字 0):
skip(createArray(0, 1, 2, 3), 1)
并返回包含剩余项的以下数组:[1,2,3]
切片
通过指定起始位置和结束位置或值返回子字符串。 另请参阅 substring()。
slice('<text>', <startIndex>, <endIndex>?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<text> | 是 | 字符串 | 包含要查找的子字符串的字符串 |
<startIndex> | 是 | Integer | 从零开始的起始位置或值,表示开始搜索子字符串的位置 - 如果 startIndex 大于字符串长度,则返回空字符串。 - 如果 startIndex 为负数,则开始搜索索引值,该索引值是字符串长度和 startIndex 之和。 |
<endIndex> | 否 | Integer | 自从零开始的位置或值结束搜索子字符串。 位于结束索引值处的字符不包含在搜索中。 - 如果 endIndex 未指定或大于字符串长度,则搜索到字符串的末尾。 - 如果 endIndex 为负,则结束搜索字符串长度和 endIndex 总和的索引值。 |
返回值 | 类型 | 说明 |
---|---|---|
<slice-result> | 字符串 | 一个包含找到的子字符串的新字符串 |
示例
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([<collection>], <sortBy>?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<collection> | 是 | Array | 包含要排序的项的集合 |
<sortBy> | 否 | 字符串 | 用于对集合对象进行排序的键 |
返回值 | 类型 | 说明 |
---|---|---|
[<updated-collection>] | Array | 已排序的集合 |
示例 1
此示例对整数数组进行排序:
sort(createArray(2, 1, 0, 3))
并返回此数组:[0,1,2,3]
示例 2
此示例按键对对象数组进行排序:
sort(createArray(json('{ "first": "Amalie", "last": "Rose" }'), json('{ "first": "Elise", "last": "Renee" }')), 'last')
并返回此数组:[{ "first": "Elise", "last": "Renee" }, {"first": "Amalie", "last": "Rose" }')]
split
根据原始字符串中指定的分隔符字符,返回一个包含子字符串(以逗号分隔)的数组。
split('<text>', '<delimiter>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<text> | 是 | 字符串 | 根据原始字符串中指定的分隔符将分隔成子字符串的字符串 |
<delimiter> | 是 | 字符串 | 原始字符串中用作分隔符的字符 |
返回值 | 类型 | 说明 |
---|---|---|
[<substring1>,<substring2>,...] | Array | 一个数组,其中包含从原始字符串返回以逗号分隔的子字符串 |
示例 1
此示例根据作为分隔符的指定字符,从指定字符串创建具有子字符串的数组:
split('a_b_c', '_')
并将此数组作为以下结果返回:["a","b","c"]
示例 2
当字符串中不存在分隔符时,此示例创建具有单个元素的阵列:
split('a_b_c', ' ')
并将此数组作为以下结果返回:["a_b_c"]
startOfDay
返回时间戳中的天的开始时间。
startOfDay('<timestamp>', '<format>'?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
<format> | 否 | String | 一个数字格式字符串,它是单个格式说明符或自定义格式模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 如果格式不是有效值,则会生成错误。 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-timestamp> | 字符串 | 指定的时间戳,但从该天的零小时标记开始 |
示例
此示例查找以下时间戳中的天的开始时间:
startOfDay('2018-03-15T13:30:30Z')
并返回以下结果:"2018-03-15T00:00:00.0000000Z"
startOfHour
返回时间戳中的小时的开始时间。
startOfHour('<timestamp>', '<format>'?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
<format> | 否 | String | 一个数字格式字符串,它是单个格式说明符或自定义格式模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 如果格式不是有效值,则会生成错误。 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-timestamp> | 字符串 | 指定的时间戳,但从该小时的零分钟标记开始 |
示例
此示例查找以下时间戳中的小时的开始时间:
startOfHour('2018-03-15T13:30:30Z')
并返回以下结果:"2018-03-15T13:00:00.0000000Z"
startOfMonth
返回时间戳中的月份的开始时间。
startOfMonth('<timestamp>', '<format>'?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
<format> | 否 | String | 一个数字格式字符串,它是单个格式说明符或自定义格式模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 如果格式不是有效值,则会生成错误。 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-timestamp> | 字符串 | 指定的时间戳,但从该月第一天的零小时标记开始 |
示例 1
此示例查找以下时间戳中月份的开始时间:
startOfMonth('2018-03-15T13:30:30Z')
并返回以下结果:"2018-03-01T00:00:00.0000000Z"
示例 2
此示例返回此时间戳的月份的开始时间(采用指定格式):
startOfMonth('2018-03-15T13:30:30Z', 'yyyy-MM-dd')
并返回以下结果:"2018-03-01"
startsWith
检查字符串是否以特定的子字符串开头。 当找到该子字符串时返回 true,找不到时返回 false。 此函数不区分大小写。
startsWith('<text>', '<searchText>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<text> | 是 | 字符串 | 要检查的字符串 |
<searchText> | 是 | 字符串 | 要查找的起始字符串 |
返回值 | 类型 | 说明 |
---|---|---|
true 或 false | Boolean | 当找到起始子字符串时返回 true。 找不到时返回 false。 |
示例 1
此示例检查“hello world”字符串是否以“hello”子字符串开头:
startsWith('hello world', 'hello')
并返回以下结果:true
示例 2
此示例检查“hello world”字符串是否以“greetings”子字符串开头:
startsWith('hello world', 'greetings')
并返回以下结果:false
string
返回值的字符串版本。
string(<value>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 任意 | 要转换的值。 如果此值为 NULL 或者计算结果为 NULL,则此值将转换为空字符串 ("" ) 值。 例如,如果将字符串变量分配给不存在的属性(可以使用 ? 运算符对其进行访问),则 NULL 值将转换为空字符串。 但是,比较 NULL 值与比较空字符串有所不同。 |
返回值 | 类型 | 说明 |
---|---|---|
<string-value> | String | 指定的值的字符串版本。 如果 value 参数为 NULL 或计算结果为 NULL,则此值将作为空字符串 ("" ) 值返回。 |
示例 1
此示例创建以下数字的字符串版本:
string(10)
并返回以下结果:"10"
示例 2
此示例为指定的 JSON 对象创建字符串并使用反斜杠字符 (\) 作为双引号 (") 的转义字符。
string( { "name": "Sophie Owen" } )
并返回以下结果:"{ \\"name\\": \\"Sophie Owen\\" }"
sub
返回第一个数字减去第二个数字得到的结果。
sub(<minuend>, <subtrahend>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<minuend> | 是 | 整数或浮点数 | 要从中减去 subtrahend 的数字 |
<subtrahend> | 是 | 整数或浮点数 | 要从 minuend 中减去的数字 |
返回值 | 类型 | 说明 |
---|---|---|
<result> | 整数或浮点数 | 第一个数字减去第二个数字得到的结果 |
示例
此示例从第一个数字中减去第二个数字:
sub(10.3, .3)
并返回以下结果:10
substring
返回字符串中的字符,从指定的位置或索引开始。 索引值从数字 0 开始。 另请参阅 slice()。
substring('<text>', <startIndex>, <length>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<text> | 是 | 字符串 | 所需字符所在的字符串 |
<startIndex> | 是 | Integer | 一个等于或大于 0 的正数,需将其用作起始位置或索引值 |
<length> | 否 | Integer | 希望子字符串中具有的字符数(正数) |
注意
确保 startIndex 与 length 参数值相加后的总和小于你为 text 参数提供的字符串长度。 否则会收到错误,这不同于其他语言中的类似函数,其结果是从 startIndex 到字符串末尾的子字符串。 length 参数是可选的,如果不提供此参数,substring() 函数将取从 startIndex 开始到字符串末尾的所有字符。
返回值 | 类型 | 说明 |
---|---|---|
<substring-result> | 字符串 | 包含指定字符数的子字符串,从源字符串中的指定索引位置开始 |
示例
此示例基于指定的字符串从索引值 6 开始创建一个五字符的子字符串:
substring('hello world', 6, 5)
并返回以下结果:"world"
subtractFromTime
从时间戳中减去一定数目的时间单位。 另请参阅 getPastTime。
subtractFromTime('<timestamp>', <interval>, '<timeUnit>', '<format>'?)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 包含时间戳的字符串 |
<间隔> | 是 | Integer | 要减去的指定时间单位数 |
<timeUnit> | 是 | 字符串 | 间隔使用的时间单位:“秒”、“分钟”、“小时”、“日”、“周”、“月”、“年” |
<format> | 否 | String | 一个数字格式字符串,它是单个格式说明符或自定义格式模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 如果格式不是有效值,则会生成错误。 |
返回值 | 类型 | 说明 |
---|---|---|
<updated-timestamp> | 字符串 | 时间戳减去指定的时间单位数 |
示例 1
此示例从以下时间戳中减去 1 天:
subtractFromTime('2018-01-02T00:00:00Z', 1, 'Day')
并返回以下结果:"2018-01-01T00:00:00.0000000Z"
示例 2
此示例从以下时间戳中减去 1 天:
subtractFromTime('2018-01-02T00:00:00Z', 1, 'Day', 'D')
并使用可选的“D”格式返回以下结果:"Monday, January, 1, 2018"
T
take
返回集合开头的项。
take('<collection>', <count>)
take([<collection>], <count>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<collection> | 是 | 字符串或数组 | 所需项所在的集合 |
<count> | 是 | Integer | 从开头算起所需的项数(一个正整数) |
返回值 | 类型 | 说明 |
---|---|---|
<subset> 或 [<subset>] | 分别为字符串或数组 | 一个字符串或数组,其中包含来自原始集合开头的指定数目的项 |
示例
这些示例从以下集合的开头获取指定的项数:
take('abcde', 3)
take(createArray(0, 1, 2, 3, 4), 3)
并返回以下结果:
- 第一个示例:
"abc"
- 第二个示例:
[0, 1, 2]
ticks
返回自 0001 年 1 月 1 日午夜 12:00:00(或 C# 中的 DateTime.Ticks)到指定时间戳的间隔为 100 毫微秒的时钟周期数。 有关详细信息,请参阅此主题:DateTime.Ticks 属性(系统)。
ticks('<timestamp>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<timestamp> | 是 | 字符串 | 时间戳的字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<ticks-number> | Integer | 从指定的时间戳算起已过去的时钟周期数 |
toLower
返回小写格式的字符串。 如果字符串中的某个字符没有对应的小写版本,则该字符在返回的字符串中保持原样。
toLower('<text>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<text> | 是 | 字符串 | 要以小写格式返回的字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<lowercase-text> | 字符串 | 采用小写格式的原始字符串 |
示例
此示例将以下字符串转换为小写:
toLower('Hello World')
并返回以下结果:"hello world"
toUpper
返回大写格式的字符串。 如果字符串中的某个字符没有对应的大写版本,则该字符在返回的字符串中保持原样。
toUpper('<text>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<text> | 是 | 字符串 | 要以大写格式返回的字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<uppercase-text> | 字符串 | 采用大写格式的原始字符串 |
示例
此示例将以下字符串转换为大写:
toUpper('Hello World')
并返回以下结果:"HELLO WORLD"
触发器
返回触发器在运行时的输出,或者来自其他 JSON 名称和值对的值,可以将其分配给表达式。
在触发器的输入中,此函数返回来自上次执行的输出。
在触发器的条件中,此函数返回来自当前执行的输出。
默认情况下,此函数引用整个触发器对象,但是也可以指定你需要其值的属性。 此外,此函数还提供了速记版本,请参阅 triggerOutputs() 和 triggerBody()。
trigger()
返回值 | 类型 | 说明 |
---|---|---|
<trigger-output> | String | 触发器在运行时的输出 |
triggerBody
返回触发器在运行时的 body
输出。 trigger().outputs.body
的速记。 请参阅 trigger()。
triggerBody()
返回值 | 类型 | 说明 |
---|---|---|
<trigger-body-output> | String | 触发器的 body 输出 |
triggerFormDataMultiValues
返回与触发器的“表单数据”或“表单编码”输出中的键名称匹配的值组成的数组。
triggerFormDataMultiValues('<key>')
参数 | 必选 | 类型 | 描述 |
---|---|---|---|
<key> | 是 | String | 需要获取其值的键的名称 |
返回值 | 类型 | 说明 |
---|---|---|
[<array-with-key-values>] | Array | 包含与指定键匹配的所有值的数组 |
示例
此示例基于 RSS 触发器的表单数据或表单编码输出中的“feedUrl”键值创建数组:
triggerFormDataMultiValues('feedUrl')
并将以下数组返回为示例结果:["https://feeds.a.dj.com/rss/RSSMarketsMain.xml"]
triggerFormDataValue
返回一个字符串,其中包含与触发器的“表单数据”或“表单编码”输出中的键名称匹配的单个值。 如果此函数找到多个匹配项,此函数将引发错误。
triggerFormDataValue('<key>')
参数 | 必选 | 类型 | 描述 |
---|---|---|---|
<key> | 是 | String | 需要获取其值的键的名称 |
返回值 | 类型 | 说明 |
---|---|---|
<key-value> | String | 指定的键中的值 |
示例
此示例基于 RSS 触发器的表单数据或表单编码输出中的“feedUrl”键值创建字符串:
triggerFormDataValue('feedUrl')
并将以下字符串返回为示例结果:"https://feeds.a.dj.com/rss/RSSMarketsMain.xml"
triggerMultipartBody
返回具有多个部分的触发器输出中某个特定部分的正文。
triggerMultipartBody(<index>)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<index> | 是 | Integer | 所需部分的索引值 |
返回值 | 类型 | 说明 |
---|---|---|
<body> | String | 触发器多部分输出中指定部分的正文 |
triggerOutputs
返回触发器在运行时的输出,或者来自其他 JSON 名称和值对的值。 trigger().outputs
的速记。 请参阅 trigger()。
triggerOutputs()
返回值 | 类型 | 说明 |
---|---|---|
<trigger-output> | String | 触发器在运行时的输出 |
trim
从字符串中删除前导和尾随空格,并返回更新后的字符串。
trim('<text>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<text> | 是 | 字符串 | 包含要删除的前导和尾随空格的字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<updatedText> | 字符串 | 原始字符串的更新后版本,其中不含前导或尾随空格 |
示例
此示例从字符串“ Hello World ”中删除前导空格和尾随空格:
trim(' Hello World ')
并返回以下结果:"Hello World"
U
union
返回一个集合,其中包含指定集合中的所有项。 某个项只要出现在传递给此函数的任一集合中便会出现在结果中。 如果一个或多个项具有相同的名称,则具有该名称的最后一项将出现在结果中。
union('<collection1>', '<collection2>', ...)
union([<collection1>], [<collection2>], ...)
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<collection1>, <collection2>, ... | 是 | 数组或对象,但不能为两者 | 需要从中获取所有项的各个集合 |
返回值 | 类型 | 说明 |
---|---|---|
<updatedCollection> | 分别为数组或对象 | 一个集合,其中包含指定集合中的所有项 - 无重复项 |
示例
此示例获取以下集合中的“所有”项:
union(createArray(1, 2, 3), createArray(1, 2, 10, 101))
并返回以下结果:[1, 2, 3, 10, 101]
uriComponent
通过将 URL 不安全字符替换为转义字符来返回字符串的统一资源标识符 (URI) 编码版本。 请使用此函数而非 encodeUriComponent()。 虽然这两个函数的工作方式相同,但首选 uriComponent()
。
uriComponent('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 要转换为 URI 编码格式的字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<encoded-uri> | 字符串 | 带有转义字符的 URI 编码字符串 |
示例
此示例创建以下字符串的 URI 编码版本:
uriComponent('https://contoso.com')
并返回以下结果:"https%3A%2F%2Fcontoso.com"
uriComponentToBinary
返回统一资源标识符 (URI) 组件的二进制版本。
uriComponentToBinary('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 要转换的 URI 编码字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<binary-for-encoded-uri> | 字符串 | URI 编码字符串的二进制版本。 二进制内容是 base64 编码的,并且由 $content 表示。 |
示例
此示例创建以下 URI 编码字符串的二进制版本:
uriComponentToBinary('https%3A%2F%2Fcontoso.com')
并返回以下结果:
"001000100110100001110100011101000111000000100101001100 11010000010010010100110010010001100010010100110010010001 10011000110110111101101110011101000110111101110011011011 110010111001100011011011110110110100100010"
uriComponentToString
返回统一资源标识符 (URI) 编码字符串的字符串版本,有效地对 URI 编码字符串进行解码。
uriComponentToString('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 要解码的 URI 编码字符串 |
返回值 | 类型 | 说明 |
---|---|---|
<decoded-uri> | 字符串 | URI 编码字符串的解码后的版本 |
示例
此示例创建以下 URI 编码字符串的解码后字符串版本:
uriComponentToString('https%3A%2F%2Fcontoso.com')
并返回以下结果:"https://contoso.com"
uriHost
返回统一资源标识符 (URI) 的 host
值。
uriHost('<uri>')
参数 | 必选 | 类型 | 描述 |
---|---|---|---|
<uri> | 是 | String | 需要获取其 host 值的 URI |
返回值 | 类型 | 说明 |
---|---|---|
<host-value> | String | 指定的 URI 的 host 值 |
示例
此示例查找以下 URI 的 host
值:
uriHost('https://www.localhost.com:8080')
并返回以下结果:"www.localhost.com"
uriPath
返回统一资源标识符 (URI) 的 path
值。
uriPath('<uri>')
参数 | 必选 | 类型 | 描述 |
---|---|---|---|
<uri> | 是 | String | 需要获取其 path 值的 URI |
返回值 | 类型 | 说明 |
---|---|---|
<path-value> | String | 指定的 URI 的 path 值。 如果 path 不含值,则返回“/”字符。 |
示例
此示例查找以下 URI 的 path
值:
uriPath('https://www.contoso.com/catalog/shownew.htm?date=today')
并返回以下结果:"/catalog/shownew.htm"
uriPathAndQuery
返回统一资源标识符 (URI) 的 path
和 query
值。
uriPathAndQuery('<uri>')
参数 | 必选 | 类型 | 描述 |
---|---|---|---|
<uri> | 是 | String | 需要获取其 path 和 query 值的 URI |
返回值 | 类型 | 说明 |
---|---|---|
<path-query-value> | String | 指定的 URI 的 path 和 query 值。 如果 path 未指定值,则返回“/”字符。 |
示例
此示例查找以下 URI 的 path
和 query
值:
uriPathAndQuery('https://www.contoso.com/catalog/shownew.htm?date=today')
并返回以下结果:"/catalog/shownew.htm?date=today"
uriPort
返回统一资源标识符 (URI) 的 port
值。
uriPort('<uri>')
参数 | 必选 | 类型 | 描述 |
---|---|---|---|
<uri> | 是 | String | 需要获取其 port 值的 URI |
返回值 | 类型 | 说明 |
---|---|---|
<port-value> | Integer | 指定的 URI 的 port 值。 如果 port 未指定值,则返回协议的默认端口。 |
示例
此示例查找以下 URI 的 port
值:
uriPort('https://www.localhost:8080')
并返回以下结果:8080
uriQuery
返回统一资源标识符 (URI) 的 query
值。
uriQuery('<uri>')
参数 | 必选 | 类型 | 描述 |
---|---|---|---|
<uri> | 是 | String | 需要获取其 query 值的 URI |
返回值 | 类型 | 说明 |
---|---|---|
<query-value> | String | 指定的 URI 的 query 值 |
示例
此示例查找以下 URI 的 query
值:
uriQuery('https://www.contoso.com/catalog/shownew.htm?date=today')
并返回以下结果:"?date=today"
uriScheme
返回统一资源标识符 (URI) 的 scheme
值。
uriScheme('<uri>')
参数 | 必选 | 类型 | 描述 |
---|---|---|---|
<uri> | 是 | String | 需要获取其 scheme 值的 URI |
返回值 | 类型 | 说明 |
---|---|---|
<scheme-value> | String | 指定的 URI 的 scheme 值 |
示例
此示例查找以下 URI 的 scheme
值:
uriScheme('https://www.contoso.com/catalog/shownew.htm?date=today')
并返回以下结果:"http"
utcNow
返回当前时间戳。
utcNow('<format>')
另外,也可以使用 <format> 参数指定不同的格式。
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<format> | 否 | String | 一个数字格式字符串,它是单个格式说明符或自定义格式模式。 时间戳的默认格式为“o”(yyyy-MM-ddTHH:mm:ss.fffffffK),这符合 ISO 8601 标准并保留了时区信息。 如果格式不是有效值,则会生成错误。 |
返回值 | 类型 | 说明 |
---|---|---|
<current-timestamp> | 字符串 | 当前日期和时间 |
示例 1
假设今天的当前时间为 2018 年 4 月 15 日下午 1:00:00。 此示例获取当前时间戳:
utcNow()
并返回以下结果:"2018-04-15T13:00:00.0000000Z"
示例 2
假设今天的当前时间为 2018 年 4 月 15 日下午 1:00:00。 此示例使用可选的“D”格式获取当前时间戳:
utcNow('D')
并返回以下结果:"Sunday, April 15, 2018"
V
variables
返回指定变量的值。
variables('<variableName>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<variableName> | 是 | String | 需要获取其值的变量的名称 |
返回值 | 类型 | 说明 |
---|---|---|
<variable-value> | 任意 | 指定的变量的值 |
示例
假设“numItems”变量的当前值为 20。 此示例获取以下变量的整数值:
variables('numItems')
并返回以下结果:20
W
工作流
返回运行期间有关工作流本身的所有详细信息。
workflow().<property>
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<property> | 否 | 字符串 | 需要获取其值的工作流属性的名称 默认情况下,工作流对象具有以下属性: name 、type 、id 、location 、run 和 tags 。 - run 属性值是包含以下属性的 JSON 对象:name 、type 和 id 。 - tags 属性是一个 JSON 对象,其中包含与 Azure 逻辑应用中的逻辑应用或者 Power Automate 中的流关联的标记,以及这些标记的值。 有关 Azure 资源中的标记的详细信息,请查看在 Azure 中标记资源、资源组和订阅以对其进行逻辑有序的组织。 注意:默认情况下,逻辑应用没有标记,但 Power Automate 流具有 flowDisplayName 和 environmentName 标记。 |
示例 1
此示例返回工作流的当前运行的名称:
workflow().run.name
示例 2
如果使用 Power Automate,可以创建一个使用 tags
输出属性从流的 flowDisplayName
或 environmentName
属性获取值的 @workflow()
表达式。
例如,可以从流本身发送链接回到你的流的自定义电子邮件通知。 这些通知可以包含一个 HTML 链接,其中包含流在电子邮件标题中的显示名称。该链接遵循以下语法:
<a href=https://flow.microsoft.com/manage/environments/@{workflow()['tags']['environmentName']}/flows/@{workflow()['name']}/details>Open flow @{workflow()['tags']['flowDisplayName']}</a>
X
xml
返回包含 JSON 对象的字符串的 XML 版本。
xml('<value>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<value> | 是 | 字符串 | 要转换的包含 JSON 对象的字符串 该 JSON 对象必须只有一个根属性,该属性不能是数组。 请使用反斜杠字符 (\) 作为双引号 (") 的转义字符。 |
返回值 | 类型 | 说明 |
---|---|---|
<xml-version> | Object | 指定的字符串或 JSON 对象的编码 XML |
示例 1
此示例将字符串转换为 XML:
xml('<name>Sophia Owen</name>')
并返回以下结果 XML:
<name>Sophia Owen</name>
示例 2
此示例创建包含 JSON 对象的以下字符串的 XML 版本:
xml(json('{ "name": "Sophia Owen" }'))
并返回以下结果 XML:
<name>Sophia Owen</name>
示例 3
假设具有以下 JSON 对象:
{
"person": {
"name": "Sophia Owen",
"city": "Seattle"
}
}
此示例创建包含以下 JSON 对象的字符串的 XML:
xml(json('{"person": {"name": "Sophia Owen", "city": "Seattle"}}'))
并返回以下结果 XML:
<person>
<name>Sophia Owen</name>
<city>Seattle</city>
<person>
xpath
检查 XML 中是否存在与 XPath(XML 路径语言)表达式匹配的节点或值,并返回匹配的节点或值。 XPath 表达式或单纯的“XPath”有助于在 XML 文档结构中导航,以便可以在 XML 内容中选择节点或计算值。
注意
在消耗和标准逻辑应用中,所有函数表达式都使用 .NET XPath 库。 XPath 表达式与基础 .NET 库兼容,并且仅支持基础 .NET 库支持的表达式。
xpath('<xml>', '<xpath>')
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
<xml> | 是 | 任意 | 要在其中搜索与 XPath 表达式值匹配的节点或值的 XML 字符串 |
<xpath> | 是 | 任意 | 用来查找匹配的 XML 节点或值的 XPath 表达式 |
返回值 | 类型 | 说明 |
---|---|---|
<xml-node> | XML | 一个 XML 节点,当只有单个节点与指定的 XPath 表达式匹配时 |
<value> | 任意 | 来自一个 XML 节点的值,当只有单个值与指定的 XPath 表达式匹配时 |
[<xml-node1>, <xml-node2>, ...] -或- [<value1>, <value2>, ...] | Array | 一个数组,其中包含与指定的 XPath 表达式匹配的 XML 节点或值 |
示例 1
假设你有以下 'items'
XML 字符串:
<?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>
此示例传入 XPath 表达式 '/produce/item/name/text()'
,以查找与 'items'
XML 字符串中的 <name></name>
节点匹配的节点,并返回包含这些节点值的数组:
xpath(xml(parameters('items')), '/produce/item/name/text()')
此示例还使用 parameters() 函数从 'items'
获取 XML 字符串,并使用 xml() 函数将该字符串转换为 XML 格式。
以下结果数组填充了与 <name></name>
匹配的节点的值:
[ Gala, Honeycrisp ]
示例 2
此示例是示例 1 的延续,它传入 XPath 表达式 '/produce/item/name[1]'
来查找作为 item
元素的子级的第一个 name
元素。
xpath(xml(parameters('items')), '/produce/item/name[1]')
结果如下:Gala
示例 3
此示例是示例 1 的延续,它传入 XPath 表达式 '/produce/item/name[last()]'
来查找作为 item
元素的子级的最后一个 name
元素。
xpath(xml(parameters('items')), '/produce/item/name[last()]')
结果如下:Honeycrisp
示例 4
此示例假设 items
XML 字符串还包含特性 expired='true'
和 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>
此示例传入 XPath 表达式 '//name[@expired]'
来查找具有 expired
特性的所有 name
元素:
xpath(xml(parameters('items')), '//name[@expired]')
结果如下:[ Gala, Honeycrisp ]
示例 5
此示例假设 items
XML 字符串只包含特性 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>
此示例传入 XPath 表达式 '//name[@expired = 'true']'
来查找具有 expired = 'true'
特性的所有 name
元素:
xpath(xml(parameters('items')), '//name[@expired = 'true']')
结果如下:[ Gala ]
示例 6
此示例假设 items
XML 字符串还包含以下特性:
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>
此示例传入 XPath 表达式 '//name[@price>35]'
来查找具有 price > 35
的所有 name
元素:
xpath(xml(parameters('items')), '//name[@price>35]')
结果如下:Honeycrisp
示例 7
此示例假设 items
XML 字符串与示例 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>
此示例查找与 <count></count>
节点匹配的节点并通过 sum()
函数添加这些节点值:
xpath(xml(parameters('items')), 'sum(/produce/item/count)')
结果如下:30
示例 8
此示例假设你有以下 XML 字符串,其中包含 XML 文档命名空间 xmlns="https://contoso.com"
:
<?xml version="1.0"?><file xmlns="https://contoso.com"><location>Paris</location></file>
这些表达式使用 XPath 表达式 /*[name()="file"]/*[name()="location"]
或 /*[local-name()="file" and namespace-uri()="https://contoso.com"]/*[local-name()="location"]
来查找与 <location></location>
节点匹配的节点。 这些示例演示了在设计器或表达式编辑器中使用的语法:
xpath(xml(body('Http')), '/*[name()="file"]/*[name()="location"]')
xpath(xml(body('Http')), '/*[local-name()="file" and namespace-uri()="https://contoso.com"]/*[local-name()="location"]')
下面是与 <location></location>
节点匹配的结果节点:
<location xmlns="https://contoso.com">Paris</location>
重要
如果在代码视图中操作,请使用反斜杠字符 (\) 来转义双引号 (")。 例如,将表达式序列化为 JSON 字符串时,需要使用转义符。 但是,如果在设计器或表达式编辑器中操作,则无需转义双引号,因为系统会自动将反斜杠字符添加到基础定义中,例如:
代码视图:
xpath(xml(body('Http')), '/*[name()=\"file\"]/*[name()=\"location\"]')
表达式编辑器:
xpath(xml(body('Http')), '/*[name()="file"]/*[name()="location"]')
示例 9
此示例是示例 8 的延续,它使用 XPath 表达式 'string(/*[name()="file"]/*[name()="location"])'
来查找 <location></location>
节点中的值:
xpath(xml(body('Http')), 'string(/*[name()="file"]/*[name()="location"])')
结果如下:Paris
后续步骤
了解工作流定义语言