尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
影刀RPA 钉钉自动化完全指南:审批流程与数据提取实战
影刀RPA 钉钉自动化完全指南审批流程与数据提取实战作者林焱写在前面钉钉是很多中小企业的核心协作工具。影刀有两种方式操控钉钉一是通过钉钉开放平台API二是直接操控钉钉桌面客户端界面。这篇文章两种方式都讲明确告诉你什么时候用哪种。一、两种方式的区别方式适用场景优点缺点API方式发消息、读考勤、拉审批数据稳定、数据完整需要企业管理员开通权限界面自动化点击审批、回复消息无需API权限界面变动可能失效原则能用API就用APIAPI解决不了的才用界面操控。店群矩阵自动化突破运营极限二、钉钉API方式获取Access Tokenimportrequestsimportjsondefget_access_token(app_key,app_secret):urlhttps://oapi.dingtalk.com/gettokenparams{appkey:app_key,appsecret:app_secret}responserequests.get(url,paramsparams)dataresponse.json()ifdata.get(errcode)0:returndata[access_token]else:raiseException(f获取token失败{data})ACCESS_TOKENget_access_token(你的AppKey,你的AppSecret)发送群消息defsend_group_message(access_token,chat_id,content):向钉钉群发送文本消息urlfhttps://oapi.dingtalk.com/chat/send?access_token{access_token}payload{chatid:chat_id,msg:{msgtype:text,text:{content:content}}}![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f53dcbcf91794b0b8b8b1de1262c528b.png#pic_center)responserequests.post(url,jsonpayload)returnresponse.json()# 发送日报resultsend_group_message(ACCESS_TOKEN,chat123456789,今日销售日报\n总金额98,000元\n订单数156笔\n退款3笔)print(result)发送群机器人消息更简单不需要企业APP钉钉群机器人Webhook不需要任何权限申请defsend_robot_message(webhook_url,title,content):通过群机器人Webhook发送消息payload{msgtype:markdown,markdown:{title:title,text:f##{title}\n\n{content}}}responserequests.post(webhook_url,jsonpayload)returnresponse.json()# 日报发送WEBHOOKhttps://oapi.dingtalk.com/robot/send?access_token你的tokensend_robot_message(WEBHOOK, 每日数据报告,| 指标 | 数值 |\n|------|------|\n| 访客数 | 1,234 |\n| 订单数 | 56 |\n| 转化率 | 4.5% |)拉取审批记录defget_approval_instances(access_token,process_code,start_time,end_time): 获取指定审批流程的审批记录 process_code: 审批模板ID在钉钉后台流程模板里找 start_time / end_time: 毫秒时间戳 urlfhttps://oapi.dingtalk.com/topapi/processinstance/listids?access_token{access_token}payload{process_code:process_code,start_time:start_time,end_time:end_time,size:20,cursor:0![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d1670e82996745498752f344f3c35f3e.png#pic_center)}responserequests.post(url,jsonpayload)returnresponse.json()importtime# 最近7天的审批end_msint(time.time()*1000)start_msend_ms-7*24*3600*1000resultget_approval_instances(ACCESS_TOKEN,PROC-xxx,start_ms,end_ms)instance_idsresult.get(result,{}).get(list,[])获取审批详情并提取字段defget_approval_detail(access_token,process_instance_id):获取单个审批实例的详情urlfhttps://oapi.dingtalk.com/topapi/processinstance/get?access_token{access_token}payload{process_instance_id:process_instance_id}responserequests.post(url,jsonpayload)returnresponse.json()defextract_form_values(instance_detail):从审批详情中提取表单字段值form_values{}componentsinstance_detail.get(result,{}).get(form_component_values,[])forcomponentincomponents:namecomponent.get(name)valuecomponent.get(value)form_values[name]valuereturnform_values# 批量提取审批数据rows[]forinstance_idininstance_ids[:50]:# 每次最多处理50条detailget_approval_detail(ACCESS_TOKEN,instance_id)valuesextract_form_values(detail)# 获取申请人和审批时间process_infodetail.get(result,{})values[申请人]process_info.get(originator_name)values[提交时间]process_info.get(create_time)values[审批结果]process_info.get(status)rows.append(values)# 写入Excelimportopenpyxl wbopenpyxl.Workbook()wswb.activeifrows:ws.append(list(rows[0].keys()))forrowinrows:ws.append(list(row.values()))wb.save(审批数据导出.xlsx)print(f共导出{len(rows)}条审批记录)三、界面自动化方式处理API无法覆盖的场景当企业没有开通API权限或需要操作钉钉界面如手动点击审批按钮用界面自动化场景批量处理待审批事项importpyautoguiimporttimedefapprove_pending_items():处理钉钉桌面版的待审批列表# 点击钉钉工作tabwork_tabpyautogui.locateOnScreen(dingtalk_work_tab.png,confidence0.85)ifwork_tab:pyautogui.click(work_tab)time.sleep(1)# 点击待我审批pending_btnpyautogui.locateOnScreen(dingtalk_pending_approval.png,confidence0.85)ifpending_btn:pyautogui.click(pending_btn)time.sleep(1.5)# 逐个处理processed0max_items20# 每次最多处理20条whileprocessedmax_items:# 找第一个待审批itemitempyautogui.locateOnScreen(dingtalk_approval_item.png,confidence0.80)ifnotitem:print(没有更多待审批)breakpyautogui.click(item)time.sleep(2)# 截图保存审批内容timestamptime.strftime(%Y%m%d_%H%M%S)pyautogui.screenshot(fapproval_{timestamp}.png)# 点击同意按钮agree_btnpyautogui.locateOnScreen(dingtalk_agree_btn.png,confidence0.85)ifagree_btn:pyautogui.click(agree_btn)time.sleep(1)# 确认弹窗confirmpyautogui.locateOnScreen(dingtalk_confirm.png,confidence0.85)ifconfirm:pyautogui.click(confirm)time.sleep(1)processed1print(f已处理第{processed}个审批)else:print(未找到同意按钮跳过)pyautogui.press(escape)time.sleep(0.5)breakprint(f批量审批完成处理{processed}条)approve_pending_items()四、考勤数据自动汇总temu店群自动化报活动案例defget_attendance_data(access_token,user_ids,work_date):获取指定日期的考勤打卡记录urlfhttps://oapi.dingtalk.com/attendance/list?access_token{access_token}payload{workDateFrom:work_date,workDateTo:work_date,userIdList:user_ids[:50],# 每次最多50人offset:0,limit:50}responserequests.post(url,jsonpayload)returnresponse.json()# 获取全部员工列表defget_all_users(access_token,dept_id1):urlfhttps://oapi.dingtalk.com/user/listid?access_token{access_token}department_id{dept_id}responserequests.get(url)returnresponse.json().get(userlist,[])usersget_all_users(ACCESS_TOKEN)user_ids[u[userid]foruinusers]# 获取今天考勤importdatetime todaydatetime.date.today().strftime(%Y-%m-%d)attendance_records[]foriinrange(0,len(user_ids),50):batchuser_ids[i:i50]resultget_attendance_data(ACCESS_TOKEN,batch,today)recordsresult.get(recordresult,[])attendance_records.extend(records)# 汇总到Excelwbopenpyxl.Workbook()wswb.active ws.append([员工ID,姓名,打卡时间,打卡类型,打卡结果])forrecinattendance_records:ws.append([rec.get(userId),rec.get(recordId),rec.get(userCheckTime),rec.get(checkType),# OnDuty上班 OffDuty下班rec.get(timeResult)# Normal正常 Late迟到 Early早退])wb.save(f考勤汇总_{today}.xlsx)五、常见坑坑1钉钉API接口变动频繁钉钉从旧版API迁移到新版dingtalk.openapi旧接口陆续停用。建议查官方文档确认当前有效接口不要直接复制网上的老代码。坑2消息频率限制群机器人每分钟最多20条消息。批量发送要加delaytime.sleep(3)每条消息间隔3秒。坑3用户ID vs 手机号钉钉API大多数接口用userId但有时需要先用手机号换取userIdurlfhttps://oapi.dingtalk.com/user/get_by_mobile?access_token{token}mobile13800138000坑4界面自动化的图片素材需要提前截好界面操控的图片定位素材dingtalk_agree_btn.png等需要在目标机器上截取分辨率要匹配否则confidence再高也找不到。总结钉钉自动化的核心经验API能搞的用API不要费力去界面操控。API拿审批数据、考勤记录、员工信息都很稳定。界面操控只用于点击审批同意这类没有API支持的操作。署名林焱
RELATED

相关推荐

WatchMachineGo:LLM推理硬件监控可视化工具实战指南

WatchMachineGo:LLM推理硬件监控可视化工具实战指南

这次我们来看一个很有意思的工具——WatchMachineGo,这是一个专门用来可视化展示硬件在执行大语言模型推理过程的工具。对于做本地部署、性能调优或者想了解LLM推理背后硬件工作状态的人来说,这个工具能提供很直观的观察窗口。WatchMachineGo的核心价值在…

📅 2026/11/3 16:37:13
正规接地线品牌大盘点:这5家最靠谱!

正规接地线品牌大盘点:这5家最靠谱!

在电力安全领域,接地线是保障人员和设备安全的第一道防线。据统计,电力事故中因接地线质量不达标或使用不当导致的案例占比高达30%以上。但市面上的接地线品牌五花八门,价格从几十元到几百元不等,质量参差不齐,很多从业…

📅 2026/11/3 7:47:33
Claude中转站流式输出:聊天产品要看首字体验而不是总耗时

Claude中转站流式输出:聊天产品要看首字体验而不是总耗时

聊天产品的体验重点和批量任务不同。用户打开对话窗口后,最先感受到的是第一段内容什么时候出现,而不是完整回答最终用了多少秒。Claude中转站接入流式输出,可以让内容逐段展示,但也会带来前端监听、后端转发、异常中断和用户取消…

📅 2026/10/7 9:02:50
MORE NEWS

更多资讯

📰

HJ212协议解析在Java中的工程实践与避坑指南

简介:这份资源面向从事环保监测系统开发的Java工程师,提供国标HJ212协议(污染源在线自动监控系统数据传输标准)的解析实现参考,帮助解决监测数据采集、编码解码与网络交互中的落地问题。压缩包共308个文件,…

📰

Redis内存管理:键过期与淘汰机制详解

1. Redis键过期与内存淘汰机制全景解读 Redis作为高性能键值数据库,其内存管理机制直接影响系统稳定性和性能表现。我在处理多个千万级QPS的Redis集群时发现,90%的线上事故都与键过期和内存淘汰配置不当有关。本文将结合生产案例,拆解Redis 4…

📰

Photoshop切图与PSD图层批量导出:多倍图命名规范与工程实践

切图的活儿看着碎,但真上手就知道它考验的是对 PSD 结构的判断力。我见过太多人接手一份设计稿,直接打开导出面板一个一个点“快速导出为 PNG”,两百多个图标点到手酸,最后还因为命名混乱、尺寸不统一被返工。用 Photoshop 做切图…

📰

肌电前端设计:高输入阻抗、右腿驱动与陷波滤波的工程实践

简介:本资源是一份面向生物医学工程、电子电路设计及嵌入式信号采集方向初学者与课程实验者的肌电放大器专项学习材料,聚焦微弱生理信号检测中的核心电路设计与仿真验证问题。内容涵盖肌电信号特性分析(50μV~2mV幅值、10&#xf…

📰

需求中止评估框架与数据驱动决策方法论

1. 需求中止的底层逻辑与价值评估 作为一名经历过上百次需求评审的产品人,我深刻理解"叫停一个需求比启动它更需要勇气"。需求中止不是失败,而是对团队资源的最大尊重。判断需求是否该中止的核心,在于建立系统化的评估框架。 1.1…

📰

水利信息化转型:智慧水务关键技术解析与应用

1. 专题背景与核心价值水利信息化建设正在经历从传统人工管理向智慧化决策的转型关键期。这个专题课程聚焦水资源管理、河湖治理、供水保障和防洪抗旱四大核心场景,正是为了解决水利行业数字化转型中的痛点问题。我在参与某流域智慧水务平台建设时深有体会&#xff…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬