影刀RPA 培训管理自动化:学习记录追踪与证书管理 影刀RPA 培训管理自动化学习记录追踪与证书管理作者林焱 | 适用人群影刀RPA新手 | 难度★★☆☆☆一、什么情况用这个公司有在线学习平台云学堂/得到企业版/内部LMS要求员工完成必修课。但你不知道谁学了谁没学、谁快截止了还没开始。一个个打开后台查几百号人的培训管理能把你吞了。用影刀RPA定时从学习平台导出学习记录 → 对比培训计划 → 生成完成率报表 → 未完成自动提醒 → 证书到期自动预警。培训管理从「手工催命」变成「自动督学」。实际场景新员工入职培训追踪、合规培训完成率统计、专业证书续证提醒、培训学分自动核算。这篇文章能解决的问题自动导出学习平台数据培训班次完成率统计未完成课程自动提醒证书有效期监控二、怎么做店群矩阵自动化突破运营极限2.1 培训计划配置在Excel中维护培训计划培训项目课程名称必修/选修截止日期适用部门学分新员工培训公司文化与制度必修2024-07-15全公司2信息安全数据安全意识必修2024-07-31技术部32.2 影刀主流程┌──────────────────────────────────────────────┐ │ ① 【读取Excel】 │ │ 读取培训计划 员工花名册 │ │ ↓ │ │ ② 【打开网页/调API】 │ │ 从学习平台导出学习记录 │ │ ↓ │ │ ③ 【执行Python代码】 │ │ 对比培训计划与完成情况 │ ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7beb5485f2ca48b9a939fc1515bc753c.png#pic_center) │ ↓ │ │ ④ 【条件判断 通知】 │ │ 未完成→提醒、即将截止→紧急提醒 │ │ ↓ │ │ ⑤ 【写入Excel】 │ │ 生成培训完成率报表 │ └──────────────────────────────────────────────┘2.3 核心代码importjsonfromdatetimeimportdatetime,timedelta# 培训计划training_planstraining_data# 从影刀Excel读取# 学习记录从学习平台导出learning_recordslearning_data# 从影刀网页操作导出# 员工花名册employeesemployee_datadefcheck_completion(employee,plan,records):检查单个员工的单门课程完成情况emp_idemployee[工号]course_nameplan[课程名称]# 在记录中查找该员工这门课的学习记录forrecordinrecords:if(record.get(工号)emp_idorrecord.get(姓名)employee[姓名]):ifrecord.get(课程名称)course_name:# 找到了学习记录progressfloat(record.get(学习进度,0%).replace(%,))ifprogress100:return{status:已完成,progress:100}else:return{status:进行中,progress:progress}return{status:未开始,progress:0}# 批量检查 report[]todaydatetime.now().date()forempinemployees:emp_report{工号:emp[工号],姓名:emp[姓名],部门:emp[部门],必修完成:0,必修总数:0,待完成:[],}forplanintraining_plans:# 检查课程是否适用于该员工applicable_deptplan.get(适用部门,全公司)ifapplicable_dept!全公司andemp[部门]notinapplicable_dept:continueresultcheck_completion(emp,plan,learning_records)course_info{课程名称:plan[课程名称],类型:plan.get(必修/选修,必修),截止日期:plan.get(截止日期,),进度:result[progress],状态:result[status],}ifplan.get(必修/选修)必修:emp_report[必修总数]1ifresult[status]已完成:emp_report[必修完成]1else:# 未完成加入待完成列表deadline_strplan.get(截止日期,)ifdeadline_str:try:deadlinedatetime.strptime(deadline_str,%Y-%m-%d).date()days_left(deadline-today).days course_info[days_left]days_left# 分级提醒ifdays_left0:course_info[urgency]已逾期elifdays_left3:course_info[urgency]紧急elifdays_left7:course_info[urgency]提醒else:course_info[urgency]正常except:course_info[urgency]未知emp_report[待完成].append(course_info)else:emp_report.setdefault(选修课程,[]).append(course_info)# 计算完成率ifemp_report[必修总数]0:emp_report[完成率]round(emp_report[必修完成]/emp_report[必修总数]*100,1)else:emp_report[完成率]100report.append(emp_report)# 统计total_employeeslen(employees)completed_allsum(1forrinreportifr[完成率]100)urgent_countsum(1forrinreportifany(c.get(urgency)紧急forcinr[待完成]))summary{total_employees:total_employees,completed_all:completed_all,completion_rate:round(completed_all/total_employees*100,1)iftotal_employeeselse0,urgent_count:urgent_count,}outputjson.dumps({report:report,summary:summary},ensure_asciiFalse)2.4 自动提醒【遍历列表】→ report中的每条员工记录 【条件判断1】 条件员工有任何待完成课程的urgency 紧急 或 已逾期 → 是【发送企业微信消息】 接收人{员工姓名}找对应企业微信账号 内容 培训提醒 {员工姓名}你有以下培训课程即将截止或已逾期 {遍历待完成课程中urgency为紧急/已逾期的} - {课程名称}截止{截止日期}进度{进度}% 请尽快完成 【条件判断2】 条件完成率 100% 但无紧急课程 → 是每周提醒一次不要天天催2.5 生成培训报表【写入Excel】→ D:\培训\培训完成率_{月份}.xlsx Sheet1「完成率概览」 总人数 | 全部完成 | 完成率 | 紧急预警人数 Sheet2「部门汇总」 部门 | 应完成人数 | 已完成人数 | 完成率 Sheet3「个人明细」 工号 | 姓名 | 部门 | 必修完成/总数 | 完成率 | 待完成课程 Sheet4「待办提醒」 姓名 | 课程 | 截止日期 | 剩余天数 | 紧急程度2.6 证书有效期监控如果有外部证书需要续证单独管理defcheck_certificate_expiry(certificates):检查证书到期todaydatetime.now().date()alerts[]forcertincertificates:expiry_strcert.get(到期日期,)ifnotexpiry_str:continuetry:expiry_datedatetime.strptime(expiry_str,%Y-%m-%d).date()days_left(expiry_date-today).days ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0f343559916c4d3aa04a426df9d0efeb.png#pic_center)ifdays_left90:alerts.append({姓名:cert[姓名],证书名称:cert[证书名称],到期日期:expiry_str,days_left:days_left,续证建议:尽快安排考试/续费,})except:passreturnalerts三、有什么坑坑1学习平台的数据导出格式千差万别每个学习平台云学堂、魔学院、企业微信学习、钉钉授课学堂的导出格式都不同。需要针对每个平台写一个「数据清洗」环节。defclean_cloud_school_data(raw_excel):清洗云学堂导出的数据# 处理云学堂特有的格式pass[video(video-1YE8LWuu-1784018895007)(type-csdn)(url-https://live.csdn.net/v/embed/524992)(image-https://v-![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/cae432ef75d14b5797404aa4c72a730c.png#pic_center)blog.csdnimg.cn/asset/b59aed2f01d4fe8583467562aaf4dcfd/cover/Cover0.jpg)(title-temu店群自动化报活动案例)]defclean_dingtalk_training_data(raw_excel):清洗钉钉授课学堂的数据pass坑2员工姓名在不同系统中拼写不一致学习平台上叫「张三」HR系统里叫「张三技术部」匹配不上。解决用工号做匹配键而不是姓名。所有系统中最稳定的标识是工号。坑3「学习进度100%」不一定等于「已完成」有些平台进度到100%还需要点「完成确认」按钮否则不算完成。需要读取平台的「完成状态」字段而不是「进度」字段。坑4提醒频率控制不要每天给未完成的员工发消息——他们会拉黑你。REMINDER_INTERVAL{正常:7,# 每7天提醒一次提醒:3,# 每3天提醒一次紧急:1,# 每天提醒}坑5培训学分换算不同课程的学分计算方式不同——有的是完成即得分有的是根据考试成绩分等级给学分。需要在对比逻辑中处理学分计算。总结培训管理自动化的核心是「计划 vs 实际」的对比。用学习平台导出的记录对比培训计划找出差距分级提醒。用工号做匹配键最稳定提醒要控制频率。