You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power Automate中无需Apply to Each合并FilterArray结果?

解决Power Automate循环追加数组的性能与调用量超限问题

问题背景

在Power Automate的Apply To Each流程中,针对不同时间多次调用外部API,依次完成SOAP标签移除、XML转JSON、解析过滤后,得到FilterJSON-IncludeUser的结果(结构为带body数组的JSON或空值)。目前通过Apply to each 3循环调用Append to array variable将结果追加到jointJson数组,存在两个问题:

  • 流程耗时过长
  • 每日调用次数超出48000次的阈值

需求:无需循环和Append to array variable,直接合并所有FilterJSON-IncludeUser的结果。

解决方案

利用Power Automate的集合操作表达式或Select动作,批量提取并合并所有结果中的body数组,替代逐次追加的循环逻辑。

具体步骤

  1. 提取所有有效body数组
    新增一个Select动作,数据源选择Apply To Each的输出(即所有FilterJSON-IncludeUser的结果集合)。
    在映射字段中使用表达式处理空值,确保空结果不会破坏合并:

    if(empty(item()?['body']), json('[]'), item()?['body'])
    

    该表达式作用:若当前结果的body为空,返回空数组;否则返回原body数组。

  2. 扁平化合并数组
    使用flatten表达式将Select输出的数组集合合并为单个一维数组,直接赋值给jointJson变量:

    flatten(body('Select'))
    

    若你的Power Automate版本不支持flatten,可使用替代表达式:

    json(concat('[', join(body('Select'), ','), ']'))
    

效果说明

  • 彻底消除循环追加的动作调用,将多次Append to array variable的调用次数压缩为1次(或直接用表达式赋值无额外调用),避免触发每日调用阈值。
  • 批量处理比循环逐次追加的效率提升明显,大幅缩短流程耗时。

示例验证

假设Apply To Each输出两个FilterJSON-IncludeUser结果:

{"body":[{"@Id":"19267384","@AgentId":"11**",...}]}
{"body":[{"@Id":"19267387","@AgentId":"11657",...}]}

经过Select和flatten处理后,jointJson将直接得到合并后的数组:

[{"@Id":"19267384","@AgentId":"11**",...},{"@Id":"19267387","@AgentId":"11657",...}]

内容的提问来源于stack exchange,提问作者microsoftdeveloperdesigner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 18:22:39