在条件中使用表达式来查看多个值

在创建云端流时,您可以使用条件操作快速比较单个值与另一个值。 但是,有时候需比较多个值。 例如,可能需要查看电子表格或数据库表中几个列的值。

在本教程中,您将创建一个云端流并使用 or 条件。 在其他常见表达式的场景部分,您将学习如何在条件中使用其他表达式,如 andemptygreaterless

先决条件

以下是完成本教程所需的内容。

  • 对 Power Automate 的访问权限。
  • 您自己的电子表格,其中包含本教程后文中描述的表格。 确保将电子表格保存在 Power Automate 能够访问的某个位置,例如 Dropbox 或 Microsoft OneDrive。
  • Microsoft 365 Outlook(虽然本教程中使用了 Outlook,但您可以在流中使用任何受支持的电子邮件服务。)

创建云端流

可以在 Copilot 中使用自然语言创建云端流,也可以从头开始创建。 如果您有权访问 Copilot,请选择使用助手选项卡来创建您的流。 如果您无法访问 Copilot,请选择不使用助手选项卡。

  1. 登录到 Power Automate

  2. 请 Copilot 为您创建一个流。 复制以下提示并粘贴到 Copilot 字段中:

    Every week, list rows in an Excel table, and if the Status column equals Succeeded or claim manager's email is jake@contoso.com, delete Excel row.
    
  3. 选择生成

  4. 选择保留并继续

  5. 检查连接。 如果数据源连接正确,则应用或服务旁边会显示一个绿色复选标记。 如果未出现绿色勾选标记,请选择应用或服务并按照提示操作。

  6. 设置好连接后,选择创建流设计器界面将打开。 如有必要,可在此处配置云端流。

  7. 转到选择电子表格并获取所有行

选择电子表格,获取所有行

创建云端流后,获取一个包含状态列的电子表格表格。 状态列的可能值包括:

有时候,如果某个项的值为 valueAvalueB,则工作流需采取操作。 例如,您可能在跟踪电子表格表中任务的状态。 假设该表有一个名为状态的列,此列的可能值为:

  • completed
  • blocked
  • unnecessary
  • not started

以下示例展示了该电子表格的外观:

具有状态列的示例电子表格的屏幕截图。

要处理电子表格,请从设计器开始。 可在新设计器或经典设计器中进行操作。 这两个设计器中的步骤相似。 了解更多(附示例)请参阅新设计器与经典设计器的区别

  1. 创建云端流或从现有云端流列表中选择一个,方法是选择左侧导航栏中的我的流,然后点击>编辑

  2. 在设计器中,选择表格中的列表行操作卡。

  3. 参数选项卡中,选择位置文档库文件表格

    Copilot 表中列表行参数的屏幕截图。

  4. 通过点击配置窗格右上角的 (<<),折叠配置窗格。

  5. 转到添加条件

添加条件

在添加条件以检查电子表格表格中每行状态列的值之前,请确保您已完成本教程中的以下操作:

  1. 在设计器中,通过选择加号 (+) >添加操作来添加一个新步骤。

  2. 添加操作屏幕上,搜索应用到每一个,然后选择控制下的应用到每一个

  3. 令牌添加到从先前的步骤中选择一个输出框中,方法是选择该字段内的内容,然后选择闪电图标。

    从上一步中选择值的屏幕截图。

    标记表示电子表格表及其所有数据。

  4. 应用到每一个卡片上,选择加号 (+) >添加操作,添加一个新步骤。

  5. 搜索 condition,然后选择 Condition 控件。

  6. 添加以下 OR 表达式。 这个 OR 表达式检查表中每一行的值。

    如果状态列的值为已完成不必要,则 OR 表达式的求值结果为 true

    下面是一个条件卡的示例。

    从上一步中选择值的屏幕截图。

  7. 转到从电子表格中删除匹配的行

从电子表格中删除匹配的行

在本教程中,您使用 Or 条件从电子表格中删除值为 completedunnecessary 的行。 在添加删除一行操作之前,请确保已完成以下操作:

  1. 在设计器中,选择加号 (+) 在条件 True 分支上添加操作。

    True 分支在 Or 条件的计算结果为 true 时运行。

  2. 搜索 Excel Online (Business),然后选择删除行

    删除行的屏幕截图。

  3. 删除行面板上,完全按照您在本教程前面的列出表中存在的行卡上设置的框设置位置文档库文件框。

  4. 键列下拉列表中,选择 _PowerAppsId_

  5. 键值字段中,插入 _PowerAppsId_ 动态值。

  6. 转到保存并测试您的云端流

保存并测试您的云端流

  1. 在设计器中,选择保存。 出现一条绿色提示信息,内容为您的流已准备就绪。我们建议您进行测试
  2. 选择测试以运行流。
  3. 测试流面板中,选择手动>测试
  4. 运行流面板中,选择运行流。 如果您的流设置正确,将显示一条消息,提示您的流已成功启动。要监控它,请转到流运行页面
  5. 要关闭运行流面板,请选择完成

恭喜! 您创建了一个云端流,该流程会在状态列的值为 completedunnecessary 时删除电子表格表中的行。 以下是运行完成后电子表格的外观。

“OR”表达式完成时电子表格的屏幕截图。

注意,状态列为已完成不必要的行中的所有数据均已删除。

其他常见表达式的场景

在本节中,您将学习如何在条件中使用其他表达式。 在每个场景中,请确保您在教程中完成了以下操作:

可以在条件中使用以下逻辑表达式的任何组合。

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')

使用“and”表达式

假设电子表格表有两个列。 列名称为状态已分配。 另假设需要删除状态列的值为已阻止已分配列的值为 John Wonder 的所有行。 要完成此任务,当您在添加条件中编辑条件卡片时,使用此处显示的 and 表达式。

@and(equals(item()?['Status'], 'blocked'), equals(item()?['Assigned'], 'John Wonder'))

下面是一个条件卡的示例。

“and”表达式的屏幕截图。

使用“and”表达式运行流

如果您按照本节中的步骤操作,您的电子表格应与以下屏幕截图类似。

流运行前电子表格的屏幕截图。

流运行后,您的电子表格应类似于以下屏幕截图。

流运行后电子表格的屏幕截图。

使用“empty”表达式

注意,电子表格中现在有多个空行。 若要删除这些空行,请使用 empty 表达式确定在已分配状态列中没有文本的所有行。

要完成此任务,请按照本教程使用“and”表达式一节中列出的所有步骤操作。 在高级模式下编辑条件卡时,请使用以下 empty 表达式。

@and(empty(item()?['Status']), empty(item()?['Assigned']))

您的条件卡应类似于以下屏幕截图。

“empty”表达式的屏幕截图。

流运行后,电子表格应类似于以下屏幕截图。

“empty”运行后电子表格的屏幕截图。

注意,已从表中删除额外的行。

使用“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 中的工作流表达式函数参考指南

培训:介绍 Power Automate 中的表达式(模块)