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

如何用Power Automate捕获Dataverse表变更并同步至SharePoint日志列表?

可行,具体实现方案如下

核心逻辑

借助Dataverse触发器自带的修改前版本数据,自动对比新旧字段值,无需在Power Apps中存储旧值做对比。

分步实现(以Invoices表同步到Invoices_Logs为例,Accounts表逻辑完全一致)

1. 创建基础流结构

  • 选择触发器:当行被修改时(Dataverse),指定目标表为Invoices
  • 开启触发器的包含修改前的版本选项(这是获取旧值的关键开关)

2. 提取并格式化变更字段

  • 添加初始化变量动作:变量类型设为数组,命名为ChangedFields
  • 添加应用到每一个动作,选择触发器输出中的Modified Fields(Dataverse自动返回本次修改涉及的字段名列表)
  • 在循环内添加追加到数组变量动作,构造每条变更的结构化内容:
    {
      "字段名": "@{items('应用到每一个')}",
      "旧值": "@{triggerBody()?['PreviousValues']?[items('应用到每一个')]}",
      "新值": "@{triggerBody()?[items('应用到每一个')]}"
    }
    

3. 同步到SharePoint日志列表

  • 添加创建项动作,选择目标SharePoint站点和Invoices_Logs列表
  • 映射日志字段示例:
    • 关联发票ID:直接绑定触发器输出的发票主键字段
    • 修改时间:utcNow()
    • 修改人:绑定触发器输出的Modified By字段
    • 变更详情:用join(variables('ChangedFields'), '\n')将数组转为换行分隔的可读文本,或者根据需求自定义格式

4. 适配Accounts表

复制上述流,修改触发器的目标表为Accounts,同步目标改为Accounts_logs,调整字段映射即可。

关键注意点

  • 处理复杂字段(如选项集、Lookup)时,要调用格式化值:比如选项集的旧值需用triggerBody()?['PreviousValues']?['InvoiceType@OData.Community.Display.V1.FormattedValue'],新值同理,避免存储原始编码
  • 确保SharePoint日志列表的字段类型能容纳变更内容(比如用多行文本字段存储变更详情)
  • 测试时手动修改Dataverse表记录,验证日志是否准确捕获所有修改字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:40:28