如果特定 SharePoint 列表列已以任何方式修改,如何添加 Power Automate 流触发条件?

问题描述 投票:0回答:1

我想添加一个 Power Automate 流程触发条件,它相当于以下逻辑:

IF column_X has_been_modified THEN run_the_rest_of_the_flow

以下是有关 Power Automate 触发条件的官方文档:

https://learn.microsoft.com/en-us/power-automate/triggers-introduction#customize-a-trigger-by-adding-conditions

https://learn.microsoft.com/en-us/azure/logic-apps/logic-apps-workflow-actions-triggers

开发触发条件的动力是通过向触发器添加“条件”来减少流程运行的次数 - 以便流程仅在满足某些条件时运行。

例如,伪代码中:

IF insert_your_logic_here THEN run_the_rest_of_the_flow  

关于指定条件:

  • 如果特定列已被修改

我在这里找到了部分解决方案:

https://powerautomate.microsoft.com/en-us/blog/run-a-flow-when-a-sharepoint-column-is-modified/

解决方案有两个步骤:

  1. 修改项目或文件时

  2. 获取对项目或文件的更改(仅限属性)

该操作会输出有用的标记,例如“Has Colum Changed:”,可用于将您的流过滤到您所选择的列 关心

但是,此解决方案的问题是它仍然需要运行流程才能确定特定列是否已更改。

问题:

我如何结合这两种解决方案,以便:

  • 流程仅在修改特定列时运行

请注意,触发条件应捕获任何修改 - 而不仅仅是对已知值的更改。

可能的解决方法:

为了展示研究......

此视频展示了一种解决方法,总结如下。

但是,我更喜欢开箱即用的解决方案,而不需要创建额外的列。

在列表中创建一个附加列,例如:

ColumnOfInterest <---------- original column   
  
ColumnOfInterestCOPY <------ copy of column  

ColumnOfInterestCOPY
的值最初必须与
ColumnOfInterest
的值匹配。

伪代码中,触发条件为:

如果

ColumnOfInterest
的值不等于
ColumnOfInterestCOPY
:

  • 然后运行流程

实际代码中,触发条件为:

@not(equals(triggerOutputs()?['body/ColumnOfInterest'], triggerOutputs()?['body/ColumnOfInterestCOPY']))

在流程结束时,执行

Update item
ColumnOfInterestCOPY
的值更改为
ColumnOfInterest
更改后的任何值。因此,这些值将再次相同,并且仅当
ColumnOfInterest
发生更改时才会触发流程。

sharepoint-online power-automate sharepoint-list
1个回答
0
投票

遗憾的是,没有现成的解决方案可满足您的要求,因为 Power 自动流量触发输出或主体(我们根据其编写触发条件)不提供与列值是否已更改相关的任何信息。

因此,您将必须使用您在问题中已经提到的解决方法:

  1. 让流程运行 > 获取对项目或文件的更改(仅限属性)> 根据列值是否已更改继续流程或终止流程。
  2. 您提到的解决方法是使用附加列来跟踪列值以检查它是否已更新。
© www.soinside.com 2019 - 2024. All rights reserved.