本教程将介绍如何使用表达式和
条件
在
高级模式
下比较多个值。
创建云端流时,可以在基本模式下使用
条件
卡将单个值和其他值进行快速比较。 但是,有时候需比较多个值。 例如,可能需要查看电子表格或数据库表中几个列的值。
可以在条件中使用以下逻辑表达式的任何组合。
Expression
采用两个参数,如果两个值均为 true,则返回 true。
注意
:两个参数都必须为布尔型。
以下表达式返回 false:
and(greater(1,10),equals(0,0))
采用两个参数,如果其中一个参数为 true,则返回 true。
注意
:两个参数都必须为布尔型。
以下表达式返回 true:
or(greater(1,10),equals(0,0))
如果两个值相等,则返回 true。
例如,如果 parameter1 为 someValue,则以下表达式返回 true:
equals(parameters('parameter1'), 'someValue')
采用两个参数,如果第一个参数小于第二个参数,则返回 true。
注意
:支持的类型为整数、浮点和字符串。
以下表达式返回 true:
less(10,100)
lessOrEquals
采用两个参数,如果第一个参数小于或等于第二个参数,则返回 true。
注意
:支持的类型为整数、浮点和字符串。
以下表达式返回 true:
lessOrEquals(10,10)
greater
采用两个参数,如果第一个参数大于第二个参数,则返回 true。
注意
:支持的类型为整数、浮点和字符串。
以下表达式返回 false:
greater(10,10)
greaterOrEquals
采用两个参数,如果第一个参数大于或等于第二个参数,则返回 true。
注意
:支持的类型为整数、浮点和字符串。
以下表达式返回 false:
greaterOrEquals(10,100)
empty
如果对象、数组或字符串为空,则返回 true。
以下表达式返回 true:
empty('')
返回布尔值的相反值。
以下表达式返回 true:
not(contains('200 Success','Fail'))
如果表达式生成 true 或 false,则返回特定值。
以下表达式返回“yes”:
if(equals(1, 1), 'yes', 'no')
以下是完成本演练所需的内容。
对 Power Automate 的访问权限。
您自己的电子表格,其中的表在本演示后面有介绍。 确保将电子表格保存在 Power Automate 能够访问的某个位置,例如 Dropbox 或 Microsoft OneDrive。
Microsoft 365 Outlook(虽然我们在这里使用的是 Outlook,但您可以在流中使用任何受支持的电子邮件服务。)
使用“or”表达式
有时候,如果某个项的值为 valueA
或
valueB,则工作流需采取操作。 例如,您可能在跟踪电子表格表中任务的状态。 假设该表有一个名为
状态
的列,此列的可能值为:
以下示例展示了该电子表格的外观:
对于前面的电子表格,您希望使用 Power Automate 删除
状态
列设置为
已完成
或
不必要
的所有行。
让我们创建该流。
从空白流开始
登录到
Power Automate
。
在左侧窗格中选择
我的流
。
搜索
condition
,然后选择
Condition
控件。
添加以下
Or
表达式。 这个
Or
表达式检查表中每一行的值。 如果
状态
列的值为
已完成
或
不必要
,则
Or
表达式的求值结果为“true”。
下面是一个
条件
卡的示例。
在
删除行
卡上,完全按照您在本教程前面的
列出表中存在的行
卡上设置的框设置
位置
、
文档库
、
文件
和
表
框。
在
键列
下拉列表中,选择
_PowerAppsId_
。
在
键值
字段中,插入
_PowerAppsId_
动态值。
注意,
状态
列为
已完成
或
不必要
的行中的所有数据均已删除。
使用“and”表达式
假设电子表格表有两个列。 列名称为
状态
和
已分配
。 另假设需要删除
状态
列的值为
已阻止
、
已分配
列的值为
John Wonder
的所有行。 若要完成此任务,请执行本教程中前面介绍的所有步骤,但在以高级模式编辑
条件
卡时,请使用
and
表达式,如下所示。
@and(equals(item()?['Status'], 'blocked'), equals(item()?['Assigned'], 'John Wonder'))
下面是一个
条件
卡的示例。
使用“and”表达式运行流
如果您已按照本教程中的步骤操作,您的电子表格应类似于以下屏幕截图。
流运行后,您的电子表格应类似于以下屏幕截图。
使用“empty”表达式
注意,电子表格中现在有多个空行。 若要删除这些空行,请使用
empty
表达式确定在
已分配
和
状态
列中没有文本的所有行。
要完成此任务,请按照本教程前面的
使用“and”表达式
一节中列出的所有步骤操作。 在高级模式下编辑
条件
卡时,请使用以下
empty
表达式。
@and(empty(item()?['Status']), empty(item()?['Assigned']))
您的
条件
卡应类似于以下屏幕截图。
流运行后,电子表格应类似于以下屏幕截图。
注意,已从表中删除额外的行。
使用“greater”表达式
假设您为同事购买了棒球票,于是使用电子表格来确保每个人都付清款项。 您可以快速创建一个云端流,向每个尚未支付全款的人每日发送一封电子邮件。
使用
greater
表达式确定尚未支付全款的员工。 然后即可自动向那些尚未全额支付的员工发送一封提醒邮件。
下面是该电子表格的视图。
下面显示了如何实现
greater
表达式,以便确定尚未全额支付所欠款项的所有人员。
@greater(item()?['Due'], item()?['Paid'])
使用“less”表达式
假设您为同事购买了棒球票,于是使用电子表格来确保每个人在应允支付的日期之前都付清款项。 可以创建一个云端流,在当前日期离应允支付日期不到一天时,向每个尚未支付全款的人发送一封提醒邮件。
请将
and
表达式和
less
表达式配合使用,因为有两个条件需要验证。
要验证的条件
要使用的表达式
在“and”表达式中将“greater”和“less”表达式组合到一起
使用
greater
表达式来确定尚未全额支付欠款的员工,使用
less
表达式来确定当前日期离应允支付的日期是否不到一天。 然后即可使用
发送电子邮件
操作,向那些尚未全额支付且离应允支付日期不到一天的员工发送提醒电子邮件。
下面是该电子表格表的视图。
下面显示了如何实现
and
表达式,以便确定尚未全额支付所欠款项且当前日期离应允支付日期不到一天的所有员工。
@and(greater(item()?['Due'], item()?['Paid']), less(item()?['dueDate'], addDays(utcNow(),1)))
在表达式中使用函数
某些表达式通过运行时操作(云端流开始运行时可能不存在)获取值。 若要在表达式中引用或使用这些值,可以使用工作流定义语言提供的函数。 详细信息。 要了解详细信息,请转到
Azure 逻辑应用 和 Power Automate 中的工作流表达式函数参考指南
。