Azure Logic App如何获取Function类型步骤的Run After执行结果
Logic App获取单个步骤执行结果的解决方法
报错原因
result() 函数仅支持传入Scope作用域、For Each循环、Until循环这三类动作的名称作为参数,不支持直接传入单个普通操作(比如Azure Function调用)的名称,这是你遇到类型不匹配报错的根本原因。
两种可行解决方案
方案1:直接引用单步执行属性(无需result函数,最简便)
不需要用result()函数,直接调用Logic App内置的actions()方法获取指定步骤的执行信息即可:
- 获取步骤执行状态:
actions('UpdateJobListingFromSilkroad').status,返回值为Succeeded/Failed/Skipped/TimedOut四种,对应你设置的Run After全部触发场景 - 获取步骤错误详情(执行失败时可用):
actions('UpdateJobListingFromSilkroad').error - 获取步骤输出结果:
actions('UpdateJobListingFromSilkroad').outputs
方案2:套入Scope后使用result函数(适合需要批量获取多步执行结果的场景)
如果你需要同时获取多个步骤的执行结果,可以用Scope包裹后调用result():
- 在设计器中新增「Scope(作用域)」组件,将
UpdateJobListingFromSilkroad步骤拖拽到Scope内部,为Scope设置名称(例如JobUpdateTaskScope) - 将邮件步骤的Run After触发条件绑定为该Scope的全部4种执行状态
- 邮件正文调用
result('JobUpdateTaskScope')即可获取Scope内所有步骤的执行结果数组,单步场景下直接取第一个元素即可:result('JobUpdateTaskScope')[0].status
之前写法的问题说明
- 无参数调用
result()不符合语法要求,必须传入合法的动作名称参数 - Logic App表达式中字符串只能用单引号包裹,因此
result("UpdateJobListingFromSilkroad")会触发格式错误 - 用单引号传入单个Function步骤名称的写法格式正确,但不符合
result()的入参类型要求,因此会抛出类型不匹配报错
内容的提问来源于stack exchange,提问作者Ofer Gal
相关产品推荐
相关产品推荐

