使用Power Automate通过Offer表单匹配更新SharePoint列表现有行
Power Automate 匹配更新解决方案
核心逻辑梳理
你需要实现的是:录用表单提交后,用表单里的确认号匹配SharePoint列表的行ID,然后更新对应行的空字段。不需要复杂的equals判断,直接通过指定ID或筛选查询就能实现。
正确实现步骤
方案1:直接更新指定行(高效推荐)
如果录用表单的确认号就是SharePoint列表的行ID(数字类型),直接用「更新项目」动作即可:
- 触发节点选「当Microsoft Forms收到录用表单的新响应」
- 添加「获取响应详细信息」动作,选择录用表单,响应ID选触发节点的「响应ID」
- 添加「更新项目」动作,选择目标SharePoint列表:
- 项目ID字段:直接选择「获取响应详细信息」里的「确认号」字段(动态内容里点选即可,无需手动写表达式)
- 其他需要填充的空字段:从「获取响应详细信息」里选对应录用表单的内容填入
方案2:先筛选再更新(适合需验证存在性的场景)
如果需要先确认SharePoint里存在对应ID的行,再执行更新:
- 触发节点和「获取响应详细信息」同方案1
- 添加「获取项目」动作,选择目标SharePoint列表:
- 筛选查询里填写:
ID eq @{body('获取响应详细信息')?['rXXXXXX']}
把rXXXXXX替换成录用表单中「确认号」字段的内部标识(可从表单响应详情的字段属性里找到)
- 筛选查询里填写:
- 添加「更新项目」动作,项目ID选择「获取项目」返回结果里的「ID」,再填充其他字段
修正你之前的表达式错误
你之前的表达式写法存在语法问题,正确的equals判断(如果需要在条件节点里用)应该是:
equals(body('Get_response_details')?['r1fc332e01cca42f6a52862edc11ad005'], triggerBody()?['FormID'])
但实际场景中不需要这个判断,直接通过ID指定或筛选更高效。
注意事项
- 确保录用表单的「确认号」字段填写的是SharePoint列表的数字行ID,不要填文本格式的内容
- 尽量用动态内容点选字段,避免手动写表达式出错
内容的提问来源于stack exchange,提问作者Brian Plunektt
相关产品推荐
相关产品推荐

