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

Power Automate中Dataverse连接器如何捕获行更新的变动字段

该功能可以直接实现,无需第三方工具,基于Dataverse连接器原生能力即可完成修改前后字段比对,具体操作步骤如下:

第一步:调整触发器配置,开启旧版本值返回
  • 打开你流程中已添加的「When a row is added, modified or deleted」触发器,触发类型保持包含「修改」即可看到Return old version of rows(返回行旧版本)参数,将该参数值设置为Yes。配置完成后,行修改触发流程时,会同步返回修改前的全量旧字段值、修改后的新字段值,无需额外查询历史版本。
  • 触发器的「Select columns」参数建议勾选所有你需要监控变更的字段,不要留空,减少无效返回数据。
第二步:在修改操作分支添加字段比对逻辑

根据你需要监控的字段数量,二选一即可:

方案1:少量字段监控(5个以内)

  • 先初始化一个数组变量,命名为变更字段清单,初始值设为空数组。
  • 针对每一个需要监控的字段,添加条件判断:当触发器返回的该字段旧值 不等于 新值时,将「字段名+旧值+新值」的文本追加到变更字段清单变量中。
    旧值取值路径为triggerOutputs()?['body/_pre_entityimage']?['字段逻辑名'],新值取值路径为triggerOutputs()?['body/字段逻辑名']。

方案2:多字段批量监控(5个以上)

  • 初始化两个对象变量:旧行数据赋值为triggerOutputs()?['body/_pre_entityimage'],新行数据赋值为triggerOutputs()?['body']。
  • 添加「Select」操作,输入源为所有待监控字段的逻辑名数组,映射规则填以下表达式:
    if(equals(variables('旧行数据')?[item()], variables('新行数据')?[item()]), null, concat('字段:',item(),' | 旧值:',variables('旧行数据')?[item()],' | 新值:',variables('新行数据')?[item()]))
    
  • 添加「Filter array」操作,输入为上一步Select的输出结果,过滤条件设置为「当前项 不等于 null」,过滤后输出的内容就是所有发生变更的字段明细。
第三步:调整邮件通知内容

在修改场景对应的邮件节点正文中,将变更字段清单(或过滤后得到的变更明细数组)通过join()函数拼接为多行文本,或直接转换为HTML表格插入邮件正文,即可在通知中明确展示所有变动字段及对应新旧值。

异常场景备用方案

如果你的环境版本较旧,触发器中找不到「Return old version of rows」参数,可先给目标Dataverse表开启审计功能,行修改触发流程后,调用Dataverse原生的「List audit logs」操作,拉取对应行ID最新的一条修改类型审计日志,日志中会自动携带所有字段的新旧值,后续比对逻辑和上述步骤完全一致。

注意事项

  • 查找类型字段(关联其他表的 lookup 字段)、选项集字段比对时,建议统一取ID值或显示文本值做对比,不要直接比对整个对象,避免因数据格式差异导致判断错误。
  • 选项集字段默认返回的是数字值,可提前配置值到显示文本的映射,邮件中展示对应选项文本可读性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 21:57:23