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

如何基于MediumID数组过滤SharePoint列表项?

解决SharePoint列表项按MediumID数组筛选的问题

可行方案一:使用Power Automate「筛选数组」动作

这是最直接的实现方式,无需构造复杂查询:

  • 先执行「获取项目」动作,获取目标SharePoint列表的所有项(此步骤不要添加筛选条件)
  • 添加「筛选数组」动作,输入源选择「获取项目」输出的value
  • 设置筛选规则:
    1. 左侧选择当前项的MediumID字段
    2. 操作选项选择「包含于」
    3. 右侧选择你的MediumID整数数组(例如outputs('Select-MediaIDs'))
  • 若「包含于」选项未显示,手动输入表达式:
    contains(outputs('Select-MediaIDs'), item()?['MediumID'])
    
    注意:必须保证数组内元素与SharePoint的MediumID字段类型完全一致(均为整数),否则会出现匹配失效的情况。

可行方案二:构造OData查询(适合大数据量场景)

如果列表数据量较大,希望在获取数据阶段直接完成筛选(减少返回的数据量),可以利用OData的in操作:

  • 使用「连接」动作,将你的MediumID数组转为逗号分隔的字符串,例如数组[2,4,6]转为"2,4,6"
  • 在「获取项目」的「筛选查询」中输入:
    MediumID in (@{outputs('Join')})
    
  • 额外处理:如果数组为空,需要添加条件分支避免无效查询——数组为空时不设置筛选查询,否则使用上述表达式。

之前尝试失败的原因

  • 你使用的length(intersection(...))表达式,如果是在「获取项目」的筛选查询中调用,OData查询不支持intersection这类Power Automate专属函数,因此会提示无效查询;如果是在「筛选数组」中使用,正确写法应为greater(length(intersection(outputs('Select-MediaIDs'), createArray(item()?['MediumID']))), 0),但这种写法远不如contains简洁高效。
  • 直接用「等于」对比整数和数组属于逻辑错误:「等于」判断的是两个值完全一致,而非元素是否存在于数组中,因此无法得到预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 01:49:53