我想添加一个 Power Automate 流程触发条件,它相当于以下逻辑:
IF column_X has_been_modified THEN run_the_rest_of_the_flow
以下是有关 Power Automate 触发条件的官方文档:
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/
解决方案有两个步骤:
该操作会输出有用的标记,例如“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
发生更改时才会触发流程。
遗憾的是,没有现成的解决方案可满足您的要求,因为 Power 自动流量触发输出或主体(我们根据其编写触发条件)不提供与列值是否已更改相关的任何信息。
因此,您将必须使用您在问题中已经提到的解决方法: