函数的类型

已完成

函数分组为 10 个不同的类别,包括字符串、逻辑和数学。 组织类别旨在便于查找特定函数。 以下概述每个类别并给出一些示例。

请记住,当您演练各种示例时,我们使用静态文本和值。 这将支持您尽可能轻松地测试和重新创建示例。 在流中,您可以将静态数据替换为动态内容。 只需确保动态数据的格式适用于函数即可。

在本屏幕截图中,请注意表达式编辑器如何显示一些可用的字符串 函数。 本列表是可滚动的,当您看到字符串 函数的末尾时,您将看到集合函数等。 请注意,还有搜索输入。 如果您知道要在公式中引用哪个函数,可以在此处输入并跳过滚动。 选择这些公式中的任何一个都会将其添加到公式输入字段,您可以在该字段中添加输入以完成公式,以便您可以保存它。

不过,不必选择函数。 如果您知道该函数,则可以简单地开始键入它。 另请注意,如果您不知道要使用哪个表达式,或者只是想获取更新现有表达式的帮助,则可以使用 Copilot 通过提供自然语言输入来帮助您创建表达式。

字符串函数

字符串(文本)函数用于修改字符串、查找字符串中的字符、设置字符串格式等。 文本操作是尝试改进从其他位置接收的数据的格式或修改此类数据时经常使用的核心技能。

字符串函数的一个示例是 formatNumber 函数。 本函数可将数字转换为所选格式的字符串。 常用请求是使数字看起来像货币。 若要将数字 12.5 更改为 $12.50,请使用以下公式:

formatNumber(12.5,'C')

“C”表示货币数值格式字符串。 无需担心:标准数值格式字符串提供了其他选项列表。 您可能希望了解在将数字显示为货币但使用日元符号情况下的操作。 您可以使用可选参数传递区域设置。

formatNumber(12.5,'C','ja-JP')

此公式返回 ¥13。

集合函数

这些函数用于数组和字符串。 您可以使用它们检查数组是否为空、捕捉第一个或最后一个项目,甚至用于联接、并集和交集运算。

一个有用的集合函数示例是 length。 您可以使用 length 返回字符串或数组中的项数。 以下示例用于计数字符串“I love Power Automate”中的字符数。

length('I love Power Automate.')

输出将为 22。 请注意空格算作一个字符。 您可以使用此类函数进行验证或结合字符串函数操作字符串。

逻辑函数

此类函数用于使用条件、比较值以及执行其他基于逻辑的计算。 例如,若要比较某个数字是否大于其他数字,通常将此类函数视为 If 语句。 Power Automate 支持您期望使用的所有逻辑比较。

在以下示例中,表达式比较 12 是否大于 10,然后输出相应的字符串。 这也是您的第一个使用多个函数的表达式。 我们将结合 ifgreater 逻辑函数。

If(greater(12,10),'Yes','No')

此表达式的结果将为字符串 Yes。 若要理解表达式,请从内到外计算。Greater(12,10) 根据 12 是否大于 10 返回 true 或 false。 在本示例中,公式计算结果为 true(即 12 大于 10)。

Greater 表达式之后的第一个值(“Yes”)是表达式求值结果为 true 时返回的值,下一个值(“No”)是表达式求职结果为 false 时返回的值。 由于 Greater(12、10)的求值结果为 true,因此返回表达式后的第一个值或 Yes。

重要提示

您可以编写如上所示的逻辑表达式,但也可以通过名为条件的操作在不使用表达式的情况下编写 If 语句。 您可以通过要求 Copilot 插入条件或选择加号图标并搜索名为条件的操作来在流中插入新步骤。

您可以搜索条件,也可以利用 Copilot 向流中添加一个条件。

以下是使用条件操作而非表达式编写的相同逻辑。

提示

当您使用 Copilot 时,请验证它是否达到了您的期望。 如果 Copilot 能帮助您入门,则可以添加或修改以准确获取所需内容。

随着时间的推移,您将根据要求使用表达式和条件的组合。

转换函数

这些函数用于更改数据类型。 这可能是将文本数字转换为整数等简单函数或将文件编码从 base64 更改为二进制等更复杂的函数。 了解此类函数有助于解决确定获取适当类型数据时出现的问题。

常见应用场景包括使用 intfloat 将文本数字改为实际数字。 该应用场景在将数据从数据源导入流时比较常见。 数字 12 或 12.4 可以储存为文本。 若要在逻辑函数中使用该数字或将其写入接收数字的位置,您需要对其进行转换。 以下示例将字符串“12”更改为整数 12。

Int('12')

这将输出整数 12。 如果字符串为“12.4”,由于存在小数,您需要将其转换为浮点数。 在该示例中,您将使用

Float('12.4')

现在,您可以使用刚刚创建的文本数字来重新创建前面的逻辑函数示例。

If(greater(Int('12'), Float('12.4')),'Yes','No')

这将输出字符串“No”,因为 12 不大于 12.4。 组合使用函数很常见,是需要学习的有用模式。

数学函数

数学函数完全按照预期执行。 此类函数允许加、减、乘以及执行其他类似计算。 此外,数学函数还允许在数据集中查找最小和最大数字、在指定间隔之间获取随机数字以及实现其他目的。 若要获取介于 1 到 10 之间的随机数字,请使用此表达式:

rand(1,10)

需要注意的一点是加法 (add) 和减法 (sub) 使用不同的函数。 许多公式语言加负数来实现减法,但 Power Automate 未采用这种做法。 若要对两个数字加和,请使用此表达式:

add(12, 13)

这将返回 25。 如果要对三个数字加和,需要添加第二个函数,例如:

add(add(12,13),15)

这将返回 40。 如前所示,您可以通过嵌套函数获取所需结果。

日期和时间函数

此类函数用于返回当前日期和时间、更改时区、查找有关日期和时间的特定信息以及执行其他日期或时间操作。 如果数据中包含日期和时间值,您将使用此类函数。

浏览 Power Automate 中的日期和时间函数时需要注意此类函数通常基于 UTC。 大部分数据源以 UTC 格式与 Power Automate 来回传递数据。 此外,如果您使用 UTCNow() 函数,将以 UTC 格式返回当前时间。 如果要使用该格式的时间与当前处于东部时区的用户数据进行比较,需要使用以下公式转换时区:

convertFromUtc(utcNow(), 'Eastern Standard Time', 'dd-MM-yyyy hh:mm tt' )

这将输出 09-02-2024 11:28 AM。 有关日期时间格式选项的完整列表,请参阅自定义日期和时间格式字符串

引用函数

引用函数用于处理操作和触发器的输出。 其优势在于 Power Automate 通常可为您编写此类函数。 向流添加动态内容时,您将在无意中使用引用函数。 如果添加动态内容并将光标悬停在该内容上,您可以看到基础引用函数。

在此屏幕截图中,您可以通过将 User name 动态内容添加到“撰写”的输入来在“撰写”操作中查看此内容。

将光标悬停在用户名上可以查看

triggerOutputs()?['headers']?['x-ms-user-name-encoded']

Power Automate 使用 triggerOutputs 为您创建的表达式。 它将从 Headers 属性中提取 x-ms-user-name-encoded 属性。 您通常可在 Power Automate 中通过动态内容引用这些属性。 但也可在必要时编写自己的表达式以重新创建相关属性。 每个触发器和操作都使用不同的格式检索数据。

在流中添加不同的触发器、操作、数据源和应用到每一个循环来浏览这些函数。 然后将其属性用作动态数据来查看更多示例。 好消息是编写这些类型的表达式并不常见。

工作流函数

工作流函数用于检索有关流的信息,与引用函数密切相关。 其中一个函数称为工作流。 您可按如下所示使用该函数。

workflow().run.id

这将返回当前流运行的 ID。 您可按需要使用此函数进行错误报告或日志记录。 这些函数并不常用。

URI 分析函数

这些函数用于解析以字符串形式传入的 URI。 您可以使用这些函数查找 URI 的主机、路径、查询字符串或其他部分。 以下示例为您展示如何使用 uriQuery 获取给定 URI 的查询字符串部分。

uriQuery('https://flow.microsoft.com/fakeurl?Test=Yes')

该函数将返回字符串 ?Test=Yes,然后您可以使用字符串函数进行分析以获取从 URI 传入的值。

操作函数

操作函数用于处理流中的特定对象。 您可以执行查找第一个非空值、使用属性或查找 xpath 匹配项等操作。 这些函数通常用于 JSON 或 XML 节点计算。

其中一个有用的函数是 coalesce。 此函数允许您在指定值集中查找第一个非 null 值。 您使用以下公式中所示的函数:

coalesce(null, 'Power Automate', 'Power Apps')

本公式将返回字符串 Power Automate。 传入多个值并且希望查找第一个不为 null 的值时,使用本公式非常方便。