如何在Azure Logic App中从Scope错误结果JSON中提取失败步骤的错误消息
在Azure Logic Apps中提取Scope失败步骤的错误消息
我来帮你搞定这个问题!在Azure Logic Apps里,要从Scope的执行结果中精准提取出status为Failed的步骤的错误消息,你可以通过内置动作和表达式轻松实现,具体操作如下:
步骤1:引用Scope的执行结果
首先确保你已经获取到了目标Scope的执行结果,通常可以直接用表达式引用Scope的输出:
@actions('Your_Scope_Name')['outputs']['body']
把Your_Scope_Name替换成你实际使用的Scope组件名称,这个表达式会返回你提供的那种包含所有步骤执行信息的JSON结构。
步骤2:筛选出失败的步骤
添加一个筛选数组动作,配置如下:
- 从:填入上面的表达式(或者选择你存储Scope结果的变量/输出),指向JSON中的
body数组 - 条件:选择字段
status,运算符选等于,值填写Failed
执行这个动作后,你会得到一个仅包含所有失败步骤的数组(对应你示例中的Set_variable步骤)。
步骤3:提取错误消息
接下来根据你的需求提取错误消息:
需求1:仅获取错误消息列表
使用select表达式提取所有失败步骤的error.message字段:
@select(body('Filter_array'), item()['error']['message'])
针对你的示例,这个表达式会返回:
[ "Vorlagensprachausdrücke in den Eingaben der Aktion \"Set_variable\" in Zeile \"1\" und Spalte \"2098\" können nicht verarbeitet werden: Versuch zum Teilen eines Integral- oder Dezimalwerts durch null in Funktion \"div\"." ]
需求2:获取结构化的步骤名称+错误消息
如果需要保留步骤名称和错误消息的对应关系,可以用createObject构造自定义对象:
@select(body('Filter_array'), createObject('stepName', item()['name'], 'errorMessage', item()['error']['message']))
示例返回结果:
[ { "stepName": "Set_variable", "errorMessage": "Vorlagensprachausdrücke in den Eingaben der Aktion \"Set_variable\" in Zeile \"1\" und Spalte \"2098\" können nicht verarbeitet werden: Versuch zum Teilen eines Integral- oder Dezimalwerts durch null in Funktion \"div\"." } ]
额外提示
如果你的错误处理逻辑需要直接使用这些消息(比如发送告警邮件),可以直接在邮件内容中引用上述表达式,无需额外存储变量,简化流程。
内容的提问来源于stack exchange,提问作者Paul Richardson
相关产品推荐
相关产品推荐

