如何在Power Automate中为每人分配2项独立审计任务
实现人员批量分配审计任务(每人2项)的方案
Power Automate 实现步骤
前置准备
确保有三个SharePoint列表:
AuditTasks:存储待分配的审计任务,包含AuditID(唯一标识)字段Assignees:存储分配人员,包含PersonName(或用户字段)字段AuditAssignments:存储最终分配结果,包含Person、Audit、AssignmentID(可选,可自动生成)字段
流程构建
获取数据源
- 添加
Get items动作,获取AuditTasks列表数据,排序选择AuditID升序 - 添加另一个
Get items动作,获取Assignees列表数据,排序选择PersonID(或姓名)升序
- 添加
初始化变量
- 添加
Initialize variable动作:- 变量名
currentPersonIdx,类型整数,初始值0 - 变量名
tasksPerPerson,类型整数,初始值2 - 变量名
taskCount,类型整数,初始值0
- 变量名
- 添加
遍历审计任务并分配
- 添加
Apply to each动作,选择Get items(审计任务)的value输出作为遍历对象 - 在循环内:
- 获取当前分配人员:用表达式
body('Get_items_-_Assignees')?['value']?[variables('currentPersonIdx')]?['PersonName']获取当前人员姓名(根据实际字段名调整) - 创建分配记录:添加
Create item动作,向AuditAssignments列表写入数据,Person字段填上述人员,Audit字段填当前审计任务的AuditID - 更新计数器与人员索引:
- 添加
Increment variable动作,将taskCount加1 - 添加
Condition动作,判断taskCount是否等于tasksPerPerson:- 如果是:添加
Set variable动作,把taskCount重置为0;再添加Increment variable动作,把currentPersonIdx加1 - 如果
currentPersonIdx超过人员列表长度(即currentPersonIdx>= length(body('Get_items_-_Assignees')?['value'])),则重置为0(实现循环分配)
- 如果是:添加
- 添加
- 获取当前分配人员:用表达式
- 添加
Power Apps 实现代码逻辑
数据准备
在屏幕OnVisible事件中加载数据:
// 加载并排序审计任务和人员列表 ClearCollect(colAuditTasks, Sort(AuditTasks, AuditID, Ascending)); ClearCollect(colAssignees, Sort(Assignees, PersonName, Ascending)); Clear(colAssignments); // 清空分配结果集合
分配逻辑实现
添加一个按钮,设置OnSelect事件代码:
Set(varTasksPerPerson, 2); // 每人分配2项任务 ForAll( colAuditTasks, // 计算当前任务对应的人员索引:(任务序号-1) // 每人任务数,取模人员总数避免越界 Set(varPersonIdx, Mod(Floor((ThisRecord.AuditID - 1)/varTasksPerPerson), CountRows(colAssignees)) + 1); // 获取对应人员 Set(varCurrentPerson, Index(colAssignees, varPersonIdx).PersonName); // 收集分配结果 Collect(colAssignments, { AssignmentID: CountRows(colAssignments) + 1, Person: varCurrentPerson, Audit: ThisRecord.AuditID }) ); // 可选:将结果保存到SharePoint列表 ForAll( colAssignments, Patch(AuditAssignments, Defaults(AuditAssignments), { Person: ThisRecord.Person, Audit: ThisRecord.Audit }) )
说明
- 代码中通过
Floor((ThisRecord.AuditID - 1)/varTasksPerPerson)计算当前任务属于第几个人员的批次,再用Mod处理人员循环的情况 - 如果审计任务总数不是人员数×2的整数倍,剩余任务会继续按顺序分配给后续人员
内容的提问来源于stack exchange,提问作者Calvin Wilcox
相关产品推荐
相关产品推荐

