[教程] 使用 Power Automate 进行高级错误捕获

在本文中,我将向您展示如何捕获有关流程运行失败的重要信息。这可以包括用于创建流程运行链接的工作流程变量、流程名称和错误消息。

阅读时间: About 20 minutes
用于: 使用 Power Automate 的 SharePoint 开发人员
关键要点: 在本教程中,我将演示如何在流程失败时收集重要信息。

在本教程中,我们将使用 Office 365 SharePoint Online 和 电源自动化.

**点击任意图片查看大图**
步骤 1 – 创建新流
在 Power Automate 中,选择“我的流”,单击“新建流”下拉菜单,然后单击“即时云流”:

将流命名为“Error Trapping Example”,选择“Manually trigger a flow”,然后点击“Create”按钮:

第 2 步 - 添加操作
我们将为这个例子添加几个变量来强制测试错误。点击“+ New step”按钮,搜索“Initialize variable”动作,并添加:

重命名操作“Initialize intNumber variable”,将实际变量命名为“intNumber”,然后将变量类型设置为“Integer”:

通过单击“+ New step”按钮添加第二个变量,搜索“Initialize variable”操作,然后添加它:

将动作重命名为“初始化 strString 变量”,将实际变量命名为“strString”,然后将变量类型设置为“String”。将值设置为您想要的任何文本。在我的示例中,我将值设置为“lorem ipsum”:

点击“+新建步骤”按钮,搜索“Scope”动作,然后点击添加:

将 Scope 操作重命名为与您重命名上述操作相同的名称,并将其重命名为“Try”。我们使用标准的 Try-Catch-Finally 错误捕获术语:

单击“添加操作”按钮并使用上述相同步骤添加“设置变量”操作。重命名操作“Set intNumber variable”,并确保从下拉菜单中选择“intNumber”变量:

将 intNumber 变量值设置为“strText”变量。我们将需要这样做,因为您不能直接将整数值设置为某些文本。这一步会导致我们的流程故意失败。单击“值”字段,然后单击“表达式”按钮:

在表达式生成器中,粘贴以下表达式。请注意,您的表达式构建器可能看起来有些不同:
variables('strText')

点击“+新建步骤”按钮,搜索“范围”动作,然后点击添加。将新的作用域操作重命名为“Catch”:

首先单击“Catch”范围的菜单,选择“Configure run after”:

选择“已失败”,然后单击“完成”按钮。确保它是唯一选择的选项:

单击“Catch”范围内的“Add an action”按钮并添加“Compose”动作:

单击“输入”字段,然后单击“表达式”按钮。粘贴以下表达式。请注意,您的表达式构建器可能看起来不同:
result('Try')

单击“Catch”范围内的“Add an action”按钮并添加“Filter array”操作:

单击“发件人”字段并选择动态内容按钮。从撰写步骤中选择“输出”:

在第一个“选择一个值”字段中,通过单击表达式按钮粘贴以下表达式。请注意,表达式生成器窗口在您看来可能有所不同:
item()?['status']

将其保持为“等于”并在右侧的“选择值”字段中输入“失败”。区分大小写:

单击“添加操作”并选择“发送电子邮件 (V2)”操作:

为组织中的“收件人”字段选择一个电子邮件地址,您要将错误电子邮件发送到该地址。在“工作流程失败-”的主题类型中。直接在主题中的文本之后,单击表达式按钮并粘贴以下表达式:
workflow()['tags']['flowDisplayName']

点击“代码视图”按钮,清除正文内容。将以下代码粘贴到电子邮件正文中:


The @{workflow()['tags']['flowDisplayName']} flow failed.



Flow Run: @{concat('//us.flow.microsoft.com/manage/environments/', workflow()['tags']['environmentName'], '/flows/', workflow()['tags']['logicAppName'], '/runs/', workflow()['run']['name'])}



Error Message: @{concat(body('Filter_array')[0]?['name'], ' - ', body('Filter_array')[0]?['error']?['message'])}



点击“Catch”范围后的“+新建步骤”按钮,搜索“范围”动作,然后点击添加。将新的作用域操作重命名为“Finally”:

首先单击“最终”范围的菜单,选择“配置运行后”:

选择所有选项,然后单击“完成”按钮。无论任何故障或超时,“最终”范围都将运行。这样您就可以根据是否失败执行其他操作:

在“最终”范围内,您可以添加您认为必要的任何其他操作。我喜欢在流失败的“Catch”范围中设置另一个变量。然后,我可以使用该变量将流程终止为失败或成功。在这里发挥创意。

测试流程后,您将收到一封电子邮件,其中包含有关流程失败原因的有用信息以及流程运行链接以供进一步分析:

分享快乐!