如何为SharePoint列表列添加按钮以停止/取消Power Automate流
要做这个停止按钮,核心是通过Power Automate的管理能力终止对应列表项的运行中流实例,具体分三步操作:
1. 创建「停止审批流」的辅助Power Automate流
这个流专门处理终止操作,步骤如下:
- 触发方式选手动触发流,添加两个输入参数:
列表项ID(数字类型)、站点URL(字符串类型,固定站点可直接硬编码,无需参数) - (推荐优化)如果你的审批流触发时已经把流实例ID写入列表专属列(比如命名为「运行中流实例ID」),直接添加「获取项目」动作,根据
列表项ID读取该列的值;若未存储,则添加「列出流运行」动作,配置审批流所在环境、流名称,筛选条件设为status eq 'Running',再通过条件判断每个运行实例的触发内容是否匹配目标列表项ID(比如检查触发的SharePoint项ID是否等于输入的列表项ID) - 添加「终止流运行」动作,配置对应环境、审批流名称,填入前面获取到的流运行ID,终止原因填「用户取消审批」,终止类型选「取消」(Cancel)——如需强制终止则选「终止」(Terminate)
2. 配置SharePoint列表的停止按钮JSON格式
选择一个列(可新建单行文本列,或复用现有列),编辑列格式,粘贴如下示例JSON:
{ "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json", "elmType": "button", "txtContent": "取消审批", "customRowAction": { "action": "executeFlow", "actionParams": "{\"id\":\"<你的辅助停止流GUID>\",\"headerText\":\"确认取消审批\",\"runFlowButtonText\":\"确定取消\",\"parameters\":[{\"key\":\"列表项ID\",\"value\":\"[$ID]\"},{\"key\":\"站点URL\",\"value\":\"[$SiteUrl]\"}]}" }, "style": { "background-color": "#dc3545", "color": "#fff", "border": "none", "border-radius": "4px", "padding": "6px 12px", "cursor": "pointer" }, "visibility": "=if([$运行中流实例ID] != '', 'visible', 'hidden')" }
注意替换<你的辅助停止流GUID>:打开Power Automate辅助流的详情页,从URL中复制那串GUID(例如https://make.powerautomate.com/environments/xxx/flows/xxxx-xxxx-xxxx-xxxx/details中的长串字符)。visibility配置可让按钮仅在存在运行中流时显示,对应你存储实例ID的列表列。
3. 权限与细节注意
- 确保使用按钮的用户拥有辅助流的运行权限,以及审批流的编辑/管理权限(否则无法终止流运行)
- 强烈建议在审批流触发时,用「更新项目」动作将当前流的
@workflow()?['run']['name'](即流实例ID)写入列表专属列,这样停止流时无需筛选,直接通过ID终止,效率更高且避免误关其他实例 - 流终止后,审批人侧的待审批请求会自动失效,无需额外处理
内容的提问来源于stack exchange,提问作者Phil Edwards
相关产品推荐
相关产品推荐

