基于Power Automate实现SharePoint自动休假余额工作流求助
核心逻辑
员工提交休假申请后,系统自动校验目标日期的Leave balance是否大于0:
- 校验通过:直接完成预订,更新SharePoint余额并通知经理
- 校验不通过:告知员工名额已满
具体配置步骤
1. 完善SharePoint列表结构
确保你的列表包含以下字段(按需补充):
Date:日期类型(存储休假日期)Day:文本/计算列(可选,自动提取星期几,方便快速查看)Leave balance:数字类型(单日可休假名额,初始值设为3)Employee Name:文本/人员类型(记录预订休假的员工)
2. 搭建Power Automate云流
推荐用Microsoft Forms作为员工申请入口(比直接在SharePoint提交更友好),流程配置如下:
步骤1:设置触发条件
选择当新响应提交时(Microsoft Forms触发器),关联你创建的休假申请表单(表单需包含「员工姓名」「休假日期」两个字段)
步骤2:获取目标日期的剩余额度
添加获取项目(SharePoint动作),配置:
- 站点地址:你的SharePoint站点URL
- 列表名称:目标休假列表
- 筛选查询:
Date eq '@{triggerBody()['rXXXXX']}'(rXXXXX替换为Forms中「休假日期」字段的内部名称,可在Forms设置中查看)
步骤3:判断余额是否可用
添加条件动作,设置判断规则:
@{outputs('获取项目')?['body/Leave balance']} > 0
步骤4:处理通过校验的申请(「是」分支)
依次添加以下动作:
- 更新项目(SharePoint):找到对应日期的额度记录,将
Leave balance更新为@{sub(outputs('获取项目')?['body/Leave balance'], 1)}(用表达式实现余额减1) - 创建项目(SharePoint):在列表中新增一条预订记录,填写
Employee Name为申请人姓名,Date为休假日期,Leave balance设为0(或备注「已预订」) - 发送电子邮件(V2):收件人设为经理邮箱,邮件内容示例:
员工@{triggerBody()['员工姓名字段内部名']}已成功预订@{triggerBody()['休假日期字段内部名']}的休假,当日剩余休假额度为@{sub(outputs('获取项目')?['body/Leave balance'], 1)}
步骤5:处理未通过校验的申请(「否」分支,可选)
添加发送电子邮件(V2),通知员工:
抱歉,@{triggerBody()['休假日期字段内部名']}的休假名额已用完,无法完成预订
关键优化点
- 开启并发控制:在流程设置中把并行度设为1,避免多个员工同时申请同一日期时出现余额超减的问题
- 统一日期格式:确保Forms和SharePoint的日期格式一致,避免筛选不到对应额度记录
- 人员字段适配:如果用人员类型存储员工信息,需在流程中转换为用户的显示名称或邮箱,避免显示异常
内容的提问来源于stack exchange,提问作者Shiva srivastava
相关产品推荐
相关产品推荐

