在条件中使用表达式来查看多个值
本教程将介绍如何使用表达式和条件在高级模式下比较多个值。
创建云端流时,可以在基本模式下使用条件卡将单个值和其他值进行快速比较。 但是,有时候需比较多个值。 例如,可能需要查看电子表格或数据库表中几个列的值。
可以在条件中使用以下逻辑表达式的任何组合。
Expression | 描述 | 示例 |
---|---|---|
and | 采用两个参数,如果两个值均为 true,则返回 true。 注意:两个参数都必须为布尔型。 |
以下表达式返回 false:and(greater(1,10),equals(0,0)) |
or | 采用两个参数,如果其中一个参数为 true,则返回 true。 注意:两个参数都必须为布尔型。 |
以下表达式返回 true:or(greater(1,10),equals(0,0)) |
等于 | 如果两个值相等,则返回 true。 | 例如,如果 parameter1 为 someValue,则以下表达式返回 true:equals(parameters('parameter1'), 'someValue') |
less | 采用两个参数,如果第一个参数小于第二个参数,则返回 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('') |
not | 返回布尔值的相反值。 | 以下表达式返回 true:not(contains('200 Success','Fail')) |
if | 如果表达式生成 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。
在左侧窗格中选择我的流。
选择新建流>计划的云端流。
向流添加触发器
为流命名。
将计划设置为每天运行流一次。
选择创建按钮进入下一步。
备注
Power Automate 使用经典云端流设计器或带有 Copilot 的云端流设计器。 要确定您使用的是哪种设计器,请转至了解具有助手功能的云端流设计器中的注释部分。
选择电子表格,获取所有行
选择新建步骤。
搜索行,然后选择 Excel Online (Business)。
请选择对应于要使用的电子表格的获取行操作。 例如,如果要使用 Google Sheets,则选择 Google Sheets - 获取行。
选择列出表中存在的行操作。
选择包含您的数据的位置、文档库、文件和表。
查看每一行的状态列
选择新建步骤。
搜索应用到每一个,然后选择 Apply to each - 控件。
向从先前的步骤中选择一个输出框添加值令牌。
此值标记表示电子表格表及其所有数据。
在应用到每一个卡上选择添加操作。
搜索 condition,然后选择 Condition 控件。
添加以下 Or 表达式。 这个 Or 表达式检查表中每一行的值。 如果状态列的值为已完成或不必要,则 Or 表达式的求值结果为“true”。
下面是一个条件卡的示例。
从电子表格中删除匹配的行
选择该条件的如果是分支上的添加操作。
If yes 分支在 OR 条件的计算结果为 true 时运行。
搜索删除行,选择 Excel Online (Business),然后选择删除行。
在删除行卡上,完全按照您在本教程前面的列出表中存在的行卡上设置的框设置位置、文档库、文件和表框。
在键列下拉列表中,选择 _PowerAppsId_。
在键值字段中,插入 _PowerAppsId_ 动态值。
保存流。
使用“or”表达式运行流
流在保存后运行。 如果已创建此前在本教程中显示的电子表格,则下面是在运行完成后该电子表格的情况。
注意,状态列为已完成或不必要的行中的所有数据均已删除。
使用“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 表达式配合使用,因为有两个条件需要验证。
要验证的条件 | 要使用的表达式 | 示例 |
---|---|---|
是否已全额支付到期的款项? | greater | @greater(item()?['Due'], item()?['Paid']) |
是否离到期日期只有不到一天的时间? | less | @less(item()?['DueDate'], addDays(utcNow(),1)) |
在“and”表达式中将“greater”和“less”表达式组合到一起
使用 greater 表达式来确定尚未全额支付欠款的员工,使用 less 表达式来确定当前日期离应允支付的日期是否不到一天。 然后即可使用发送电子邮件操作,向那些尚未全额支付且离应允支付日期不到一天的员工发送提醒电子邮件。
下面是该电子表格表的视图。
下面显示了如何实现 and 表达式,以便确定尚未全额支付所欠款项且当前日期离应允支付日期不到一天的所有员工。
@and(greater(item()?['Due'], item()?['Paid']), less(item()?['dueDate'], addDays(utcNow(),1)))
在表达式中使用函数
某些表达式通过运行时操作(云端流开始运行时可能不存在)获取值。 若要在表达式中引用或使用这些值,可以使用工作流定义语言提供的函数。 详细信息。 要了解详细信息,请转到 Azure 逻辑应用 和 Power Automate 中的工作流表达式函数参考指南。