影刀RPA新手教程:飞书审批流自动发起完全指南——表单填写、附件上传与审批状态追踪
影刀RPA新手教程飞书审批流自动发起完全指南——表单填写、附件上传与审批状态追踪作者林焱 | 真实案例驱动每篇覆盖12大核心模块禁止空话。案例背景报销审批从3天缩短到10分钟公司报销流程是填飞书审批 → 领导审批 → 财务审批。大部分人卡在第一步不知道怎么填审批表单或者填错了被打回来重新填。我用影刀RPA做了两件事第一自动把ERP里的报销数据填入飞书审批表单员工只需要确认一下点提交。第二自动追踪审批状态审批通过后自动通知财务系统付款。整套方案上线后报销平均处理时间从3天降到了10分钟。一、安装与准备工作飞书审批流是通过飞书开放API来操作的不是通过网页自动化也可以但API更稳定。需要的准备飞书开放平台创建应用拿到 App ID 和 App Secret开启审批权限在开放平台 → 应用 → 权限管理中开启审批相关权限获取tenant_access_token企业级访问令牌tenant_access_token的获取方式POST https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal Body { app_id: 你的App ID, ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e7ef2607656546ddbe3fd0971f37b1b6.png#pic_center) app_secret: 你的App Secret }返回结果{code:0,msg:success,tenant_access_token:xxxxxx,expire:7200}我当时犯的第一个错用了app_access_token而不是tenant_access_token。app_access_token是以应用身份访问看不到企业里的审批数据。tenant_access_token是以企业身份访问才能操作审批流。二、元素定位两种方式操作审批表单操作飞书审批表单有两种方式方式一API方式推荐通过飞书审批API直接提交审批。方式二网页自动化方式模拟人在飞书网页上填表单。API方式更稳定不受页面改版影响。网页自动化方式在数据量小、API不满足需求时用。API方式先查审批定义获取approval_codeGET https://open.feishu.cn/open-apis/approval/v4/approvals 参数 app_id 你的App ID返回结果里包含企业里所有审批定义的approval_code。用approval_code发起审批实例POST https://open.feishu.cn/open-apis/approval/v4/instances Header Authorization: Bearer {tenant_access_token} Body { approval_code: xxx, open_id: 员工的open_id, ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/df60f0231ef24fe2b67fd5694a2c4177.png#pic_center) form: { form_data: [{\name\:\报销金额\,\value\:\1200\}] } }网页自动化方式用影刀的启动新浏览器指令打开飞书审批页面。用XPath定位表单输入框//input[data-field-name报销金额]飞书审批表单的字段名在HTML里通常用data-field-name或name属性标识可以先右键检查查看。我当时踩过这个坑表单字段是动态加载的页面打开了但表单还没渲染完影刀就去填数据填了个空。解决方式用等待元素出现指令等表单的第一个输入框出现后再开始填数据。三、变量与数据类型审批表单数据的组装飞书审批API的form字段格式是一个JSON字符串里面包含表单所有字段的键值对。键值对的键是字段的字段名值在飞书审批后台配置表单时定义。拼多多店群自动化上架方案比如报销审批表单有这些字段字段名类型说明报销金额数字单位元报销事由文本字符串报销类型单选差旅/办公/其他附件文件发票图片在影刀里组装form数据用配置参数指令先组装一个字典再用Python的json.dumps()转成字符串importjson form_data[{name:报销金额,value:1200},{name:报销事由,value:上海出差住宿费},{name:报销类型,value:差旅}]form_strjson.dumps(form_data,ensure_asciiFalse)print(form_str)注意form_data是一个数组不是字典。每个字段是一个对象包含name和value。我当时踩过这个坑把form_data写成了字典格式{报销金额: 1200}API一直返回表单格式错误。四、流程控制按报销类型走不同审批流不同金额的报销走不同的审批流程。比如500元以下只需要直属领导审批500元以上需要加财务审批。用影刀的如果…否则指令实现分支如果 报销金额 500 审批流 小额报销审批 approval_code 小额报销的approval_code 否则如果 报销金额 500 且 报销金额 5000 审批流 常规报销审批 approval_code 常规报销的approval_code 否则 审批流 大额报销审批 approval_code 大额报销的approval_code 需要附加说明 true 结束如果循环用在批量提交场景。比如每月批量提交部门所有人的报销从Excel表里读取报销数据遍历提交。Excel格式姓名open_id报销金额报销事由报销类型张三ou_xxx1200出差住宿差旅用影刀的读取Excel指令加载数据用遍历循环逐条提交。我当时踩过这个坑批量提交时没加工等待飞书API限频第6条开始全部失败。正确做法每次提交后加1-2秒等待加失败重试逻辑。五、网页自动化从ERP抓取报销数据自动填表报销数据来自ERP系统用影刀的启动新浏览器指令打开ERP页面。XPath CSS双定位优先XPath//table[idexpense-list]//tr[td[contains(text(),张三)]]/td[classamount]XPath定位不到用CSStable#expense-listtr:contains(张三)td.amountERP页面通常需要登录用影刀的Cookie管理指令保存登录态避免每次都输入账号密码。我当时踩过这个坑ERP登录用了滑块验证码影刀自动登录失败。解决方式先在影刀里手动登录一次保存Cookie后续用Cookie直接登录跳过验证码。六、数据处理把ERP数据转换成审批表单格式ERP里的报销数据和飞书审批表单的字段格式不一定一致。需要做的转换金额格式ERP里可能是1,200.00飞书表单里要填1200。金额 替换(金额, ,, ) # 去掉千分位逗号 金额 替换(金额, .00, ) # 去掉小数部分如果不需要日期格式ERP里可能是2024/11/11飞书表单里要填2024-11-11。日期 替换(日期, /, -)报销类型映射ERP里的类型是编码飞书表单里是文字。如果 类型编码 01 类型文字 差旅 否则如果 类型编码 02 类型文字 办公 否则 类型文字 其他 结束如果我当时踩过这个坑类型映射漏了一个值ERP里有个03类型的报销流程里没处理表单提交后类型字段是空的审批人看不懂。七、鼠标键盘图像发票附件自动上传报销需要上传发票附件用影刀的上传文件指令。飞书审批API支持通过文件类型的表单字段上传附件但需要先调用上传文件API拿到file_token再把file_token填到表单里。上传文件APIPOST https://open.feishu.cn/open-apis/im/v1/files 参数 file_type stream Body 文件二进制流返回结果里包含file_key把file_key填到审批表单的附件字段里。在影刀里发票文件通常存在本地用Python读取文件并上传importrequestsdefupload_invoice_file(token,file_path):urlhttps://open.feishu.cn/open-apis/im/v1/files?file_typestreamheaders{Authorization:fBearer{token}}withopen(file_path,rb)asf:files{file:f}resprequests.post(url,headersheaders,filesfiles,timeout60)resultresp.json()returnresult.get(data,{}).get(file_key)我当时踩过这个坑发票文件是PDF格式飞书审批的附件字段只支持图片格式jpg、png。解决方式用影刀的PDF转图片指令把PDF发票转成图片再上传。八、进阶技能审批状态追踪与自动催办审批提交后要追踪审批状态审批通过后自动触发后续动作。查询审批实例状态GET https://open.feishu.cn/open-apis/approval/v4/instances/{instance_id} Header Authorization: Bearer {tenant_access_token}返回结果里的status字段PENDING审批中APPROVED已通过REJECTED已拒绝CANCELED已撤销用影刀的定时任务每隔10分钟查询一次待审批的实例状态。如果状态变成APPROVED自动发消息通知申请人审批通过。如果状态变成REJECTED自动发消息通知申请人审批被拒原因xxx。我当时踩过这个坑定时任务查询频率太高每10秒一次飞书API限频了。现在查询间隔改成10分钟对于报销审批来说足够及时了。九、平台实战在影刀配置审批自动提交任务报销数据每天新增需要每天自动提交审批。在影刀控制台配置定时任务Cron表达式0 1 * * *每天凌晨1点执行流程逻辑步骤1从ERP读取当日新增的报销数据 步骤2过滤掉已经提交过审批的数据用审批单号去重 步骤3遍历数据调用飞书审批API提交审批 步骤4把提交结果写回ERP更新审批单号字段 步骤5发送提交结果汇总消息到飞书群过滤已提交数据这一步很重要防止重复提交。用影刀的配置文件或数据表记录已处理的报销单号每次执行前先过滤。我当时没做去重有一个报销单在Excel里被误存了两次流程跑了两遍提交了两次审批财务付了两次款。十、系统联动审批通过与财务系统自动付款审批通过后要自动通知财务系统付款。方案用影刀的定时任务查询已通过但未付款的审批实例调用财务系统API触发付款。财务系统API假设POST https://finance.example.com/api/pay Body { expense_id: 报销单号, amount: 1200, payee: 收款人 }在影刀流程里步骤1查询飞书审批状态 APPROVED 且 付款状态 未付款 的记录 步骤2遍历记录调用财务系统API触发付款 步骤3如果付款API返回成功更新本地记录的付款状态 已付款 步骤4如果付款API返回失败记录错误日志并发送告警我当时踩过这个坑财务系统API偶尔超时我的流程直接标记付款失败但实际上付款可能已经成功了只是返回超时。正确做法API超时后先查询付款状态确认是否真的失败再做处理。十一、工程化规范审批数据的完整审计链审批流程涉及钱必须有完整的审计链防止纠纷。规范一所有审批操作记录日志不可删除只可追加。TEMU店群如何管理运营[审批操作] 时间 | 操作人 | 报销单号 | 操作类型 | 详情规范二审批状态变更要有明确的来源记录。比如审批通过是因为定时任务查询到的还是因为收到了飞书的审批回调如果配置了回调。规范三所有涉及金额的审批在提交前要做二次确认金额超过一定阈值要人工审核。我在流程里加了大额审批人工确认步骤金额超过5000元的先发消息给申请人确认确认后再提交。十二、速查表与常见报错报错199991663 审批定义不存在原因approval_code错误或者应用没有该审批定义的权限。解决重新获取approval_code在飞书开放平台给应用添加审批权限。报错299991664 表单数据格式错误原因form字段的格式不对或者字段名和审批定义不匹配。解决检查form字段的格式确认字段名和审批后台的配置一致。报错399991665 没有权限操作该审批原因使用的token权限不足或者open_id对应的用户不在应用可见范围内。解决确认tenant_access_token的权限把用户加到应用的可见范围。报错4审批提交成功但看不见原因审批实例是提交成功了但审批人在飞书里看不到可能是审批流的发起条件配置有问题。解决去飞书管理后台检查审批流的发起条件和审批人配置。飞书审批API常用接口速查接口用途GET /approval/v4/approvals查询审批定义POST /approval/v4/instances发起审批实例GET /approval/v4/instances/{id}查询审批实例状态POST /approval/v4/instances/{id}/approve同意审批代审批POST /approval/v4/instances/{id}/reject拒绝审批代审批完整案例代码参考发起审批实例Python实现在影刀执行Python代码指令里调用importrequestsimportjsondefstart_approval(token,approval_code,open_id,form_data): 发起飞书审批 token: tenant_access_token approval_code: 审批定义CODE open_id: 发起人的open_id form_data: 表单数据格式是 [{name:字段名,value:值},...] urlhttps://open.feishu.cn/open-apas/approval/v4/instancesheaders{Authorization:fBearer{token},Content-Type:application/json}data{approval_code:approval_code,open_id:open_id,form:{form_data:json.dumps(form_data,ensure_asciiFalse)}}resprequests.post(url,headersheaders,jsondata,timeout30)resultresp.json()ifresult.get(code)0:instance_idresult[data][instance_id]returninstance_idelse:raiseException(f发起审批失败{result})# 查询审批状态defget_approval_status(token,instance_id):urlfhttps://open.feishu.cn/open-apis/approval/v4/instances/{instance_id}headers{Authorization:fBearer{token}}resprequests.get(url,headersheaders,timeout30)resultresp.json()ifresult.get(code)0:statusresult[data][instance][status]returnstatuselse:raiseException(f查询审批状态失败{result})XPath元素定位参考飞书审批网页表单# 报销金额输入框 //input[contains(placeholder,金额) or data-field-name报销金额] # 报销事由文本框 //textarea[data-field-name报销事由] # 提交按钮 //button[contains(class,submit) or text()提交]CSS选择器/* 表单输入框 */.form-field input[data-field-name] .form-field textarea[data-field-name]/* 提交按钮 */button.btn-submit,button.approval-submit我当时踩过这个坑三个最深刻的教训教训一open_id用了错误的用户标识。飞书有多个用户标识open_id、union_id、user_id。审批API里要的是open_id我用成了user_id一直报用户不存在。open_id是通过获取用户信息API拿到的不是飞书里的显示名或账号。教训二审批表单的字段名改了没同步更新流程。管理员在飞书后台改了审批表单的字段名加了个别名我的流程里还是用的旧字段名表单提交后字段值是空的。现在每次提交前先调查询审批定义API动态获取字段名不再硬编码。教训三批量提交时没有做失败隔离。有一条报销数据有问题金额格式错误导致整批提交全部失败。现在每条数据用独立的尝试捕获处理一条失败不影响其他数据的提交。延伸飞书审批流的完整封装代码包含发起、查询、催办、代审批功能我都整理到了 home.linyan.cloud。还有一套报销数据自动对账工具可以自动核对审批记录和财务付款记录防止重复付款。#影刀RPA #RPA教程 #飞书审批 #审批自动化 #RPA #林焱作者林焱

相关新闻

2026吉安黄金回收白银回收铂金回收旧料回收怎么选?五家高实价铂金白银线下门店测评清单 + 联系方式

2026吉安黄金回收白银回收铂金回收旧料回收怎么选?五家高实价铂金白银线下门店测评清单 + 联系方式

走进江西吉安的街头巷尾,黄金、铂金、白银回收的招牌随处可见,店铺鳞次栉比却鱼龙混杂,报价虚高、克扣成色、压价套路层出不穷,市民想要变现手中闲置首饰、金条或老银饰,往往难以甄别靠谱渠道。为帮大家避开陷阱、找到…

2026/7/3 7:59:17阅读更多 →
PostgreSQL 中的事务 ID 回卷和“冻结“

PostgreSQL 中的事务 ID 回卷和“冻结“

事务 ID 回卷(Transaction ID Wraparound) 是 PostgreSQL 中最严重、最致命的潜在故障之一。如果处理不当,它会导致数据库停止服务,甚至造成数据永久丢失。简单来说,这是因为 PostgreSQL 用来标记事务的“计数器”用完…

2026/7/3 7:59:17阅读更多 →
成年人必看!治愈一生的经典名著《小王子》

成年人必看!治愈一生的经典名著《小王子》

成年人必读的治愈经典,《小王子》从来不止是儿童童话,更是成年人的人生教科书。长大后才读懂,这本经典治愈书籍藏着我们所有的迷茫、遗憾与成长,也是当之无愧的人生必读名著。很多人年少读《小王子》,只记住了温柔的童…

2026/7/3 7:59:17阅读更多 →
可解释AI落地实战:三阶解构法实现模型逻辑口语化

可解释AI落地实战:三阶解构法实现模型逻辑口语化

1. 项目概述:这不是“解释AI”,而是让模型自己开口说话“Unboxing AI: The Data Science of True Model Interpretability”——这个标题里藏着一个被严重低估的行业真相:当前绝大多数所谓“可解释AI”(XAI)工具&#…

2026/7/3 9:49:47阅读更多 →
天猫运营培训哪个更适合

天猫运营培训哪个更适合

导读:在电商行业竞争日益激烈的今天,选择一家优质的天猫运营培训机构对于提升店铺运营效率、增强竞争力至关重要。市场上众多的培训选项中,如何挑选出真正能够提供实战经验与技术赋能的机构?本文将重点介绍海蓝邦,并结…

2026/7/3 9:49:47阅读更多 →
性能测试核心指标全解析:从响应时间到TPS的实战指南

性能测试核心指标全解析:从响应时间到TPS的实战指南

1. 项目概述:为什么性能指标是测试的“定盘星”?干了十多年性能测试,从LoadRunner到JMeter再到现在的云原生压测,我见过太多团队在性能测试上“跑偏”。最常见的场景就是:压测脚本跑得飞起,TPS曲线画得挺漂…

2026/7/3 9:49:47阅读更多 →
村长团队ZM3从零制作GTA5可旋转风车模型+轴心绑定+物理动画超详细步骤教程

村长团队ZM3从零制作GTA5可旋转风车模型+轴心绑定+物理动画超详细步骤教程

ZM3从零制作GTA5可旋转风车完整模型轴心绑定物理动画全套超详细无脑实操教程一、打开ZM3并提前调好所有GTA5专用基础环境(不调后面百分百报错)1.直接双击电脑桌面上的zModeler3软件图标,等软件完全打开,不要点任何弹窗广告&#x…

2026/7/3 9:49:47阅读更多 →
用提示词工程引导大语言模型进行创意写作:以Codex生成“摇曳鳗之舞”为例

用提示词工程引导大语言模型进行创意写作:以Codex生成“摇曳鳗之舞”为例

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 最近在尝试将AI生成内容与创意表达结合时,发现了一个有趣的方向:如何让一个强大的代码生成模型(…

2026/7/3 9:49:47阅读更多 →
深度解析PCL2启动器:5个实战技巧掌握离线登录功能

深度解析PCL2启动器:5个实战技巧掌握离线登录功能

深度解析PCL2启动器:5个实战技巧掌握离线登录功能 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher(PCL)。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL Plain Craft Launcher 2(PCL2)作为一…

2026/7/3 9:44:45阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/2 12:10:34阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/2 12:10:34阅读更多 →
LV3296与PIC18F45K22的UART通信与USB扩展方案

LV3296与PIC18F45K22的UART通信与USB扩展方案

1. LV3296与PIC18F45K22的硬件搭档解析在嵌入式数据采集系统中,LV3296条形码扫描模块与PIC18F45K22微控制器的组合堪称经典搭配。LV3296作为一款工业级条码扫描头,其核心是一颗高性能CMOS图像传感器,配合专用解码芯片,能自动识别包…

2026/7/3 0:03:41阅读更多 →
AI初创生存指南:6个月完成可信度验证闭环

AI初创生存指南:6个月完成可信度验证闭环

1. 这不是“逆袭指南”,而是一份AI初创公司真实生存手记“How To Beat Odds As an AI Startup?”——这个标题乍看像一句热血口号,但在我带过7个从0到1的AI产品团队、亲手踩过融资失败、技术债崩盘、客户POC卡在最后一公里等23类典型坑之后,…

2026/7/3 0:03:41阅读更多 →
多模态+推理链+RAG 2.0+智能体:工业级AI系统落地四支柱

多模态+推理链+RAG 2.0+智能体:工业级AI系统落地四支柱

1. 这不是又一篇“AI趋势速览”,而是一份实操者手记:当多模态、推理链、检索增强与智能体协作真正撞进工程现场“LAI #73”这个编号本身就像一个暗号——它不属于某家大厂的白皮书,也不是学术会议的议程表,而是长期泡在模型训练集…

2026/7/3 0:03:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/3 1:12:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/3 1:36:36阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/3 2:08:15阅读更多 →