影刀RPA新手教程:流程规划完全指南——怎么把一个复杂任务拆成小块
影刀RPA新手教程:流程规划完全指南——怎么把一个复杂任务拆成小块
有一次一个学员给我看他的流程:画布上有87个指令节点,从左边拖到右边要滚好几屏。鼠标滚轮都滚坏了。
“跑得通吗?”
“能跑,但每次改一个地方都要找半天。经常改错了,前面的也崩了。”
我说:“你这属于把大象塞进了冰箱。很大一个工程,但你忘了开门。”
安装与配置:流程设计的前置知识
写流程之前,先理清几个概念:
主流程:只有一个,是整套流程的入口。主流程只负责"调度",不负责具体执行。
子流程:可以有多个,每个负责一个具体任务。子流程内部写具体操作。
变量作用域:主流程的变量子流程看不见,子流程的变量主流程也看不见。数据只能通过参数传递。
理解这三个概念,流程规划就成功了一半。另一半是什么?是养成"先想后写"的习惯。
案例主线:电商数据日报
这是一个真实的业务场景:每天早上8点,自动采集淘宝、京东、拼多多三个平台的商品销量数据,汇总成一个Excel报表,发到管理者飞书上。
如果一上来就打开影刀开始拖指令,大概率会失败。正确做法是先画一张草图。
第一步:把任务写在纸上
不要急着打开影刀。拿张纸,把整个任务写成一句话:
“采集三个电商平台的数据,汇总成日报,发飞书。”
然后把这一句话拆成更小的步骤:
- 登录平台
- 采集数据
- 处理数据(清洗、汇总、生成报表)
- 发送通知
这就是"自顶向下"的拆解方法。从最高层的目标开始,一层一层往下拆。
拼多多店群自动化报活动上架!
我在公司培训新人时,让他们先画流程图再写代码。开始他们嫌麻烦,后来发现随便画两笔能省两小时调试时间。
变量与数据类型:设计好数据怎么流转
流程规划不只是拆步骤,还要设计数据怎么流转。
数据日报的数据流是这样的:
采集阶段输出的数据 -> 一张临时表(列表格式)
处理阶段读取临时表 -> 清洗汇总 -> 生成汇总表
发送阶段读取汇总表 -> 转成Markdown消息 -> 发飞书
每两个阶段之间的交接数据要定义清楚:
采集子流程输出:products_list(列表,每个元素是一个字典)
[{"platform":"淘宝","name":"蓝牙耳机","sales":1234,"date":"2025-06-26"},{"platform":"京东","name":"蓝牙耳机","sales":987,"date":"2025-06-26"}]处理子流程输入:products_list,输出:summary_dict(字典)
{"total_sales":2221,"platforms":["淘宝","京东"],"top_product":"蓝牙耳机","report_date":"2025-06-26"}网页自动化:采集子流程的设计
采集子流程是核心。三个平台的结构不同,但流程逻辑一样:
每个平台采集子流程内部:
- 打开平台网址
- 等待数据面板加载
- 循环提取每一行数据
- 存入列表变量
- 翻下一页
- 重复直到最后一页
关键指令:
- 打开网页:打开数据平台的地址
- 等待元素出现:等待数据表格加载完成
- 获取相似元素:定位所有商品行
- ForEach循环:逐行提取数据
- 点击翻页按钮:CSS选择器button.next-page
如果平台需要登录,采集子流程开头调用"子流程_登录"就可以了。
XPath与CSS选择器:稳定的元素定位
采集数据最重要的就是元素定位要稳定。数据面板的表格结构一变化,整个流程就废了。
以淘宝数据为例,定位商品名称:
- CSS选择器:.product-item .product-name
- XPath://div[contains(@class,“product-item”)]//span[@class=“product-name”]
用contains做模糊匹配比精确匹配稳定。class名可能是"product-item active",精确匹配就找不到了。
我有个采集流程跑了半年没改过元素定位,就是因为我选的都是最通用的class名,不依赖会变的部分。
流程控制:用主流程串起一切
主流程只做"指挥",不做事。长这样:
步骤1:调用 子流程_登录(三个平台共用登录) 步骤2:调用 子流程_采集淘宝数据 -> 结果 -> taobao_data 步骤3:调用 子流程_采集京东数据 -> 结果 -> jd_data 步骤4:调用 子流程_采集拼多多数据 -> 结果 -> pdd_data 步骤5:调用 子流程_合并数据(传入三个数据集) -> 结果 -> all_data 步骤6:调用 子流程_生成日报(传入all_data) -> 结果 -> report_content 步骤7:调用 子流程_发送飞书通知(传入report_content)主流程就是7个"调用子流程"节点。一眼就能看懂整个任务在做什么。
如果周二只需要采淘宝和京东,拼多多不用?删掉步骤4就行了,其他步骤不受影响。
这就是拆分子流程的最大好处:模块独立,想加就加,想删就删。
数据处理:合并与生成报表
合并子流程做的是简单的列表拼接:
all_data=taobao_data+jd_data+pdd_data但如果数据量大,拼接前可以先对每个平台的数据做简单清洗:
- 去重:同一个商品号不要出现两次
- 格式化:日期统一用YYYY-MM-DD格式
- 补全:某些字段缺失的给默认值
生成日报子流程是用处理后的数据创建Excel文件。创建Excel的步骤:
- 新建Excel文件
- 写入表头行(平台、商品名、销量、日期)
- 逐行写入数据
- 设置单元格格式(加粗表头、数字居右)
- 保存文件
进阶技能:流程的扩展性设计
好的流程规划要考虑以后会不会变。比如现在3个平台,以后可能加第4个、第5个。
设计技巧:主流程不要写死平台数量。用一个平台配置表替代:
TEMU店群矩阵自动化运营核价报活动
platforms=[{"name":"淘宝","url":"https://..."},{"name":"京东","url":"https://..."},{"name":"拼多多","url":"https://..."}]主流程里用ForEach循环遍历platforms列表,动态调用子流程。加一个平台只需往配置里加一行,不需要动任何流程代码。
鼠标键盘与图像:日报的截图附件
生成的Excel报表,有时还需要一张数据趋势图。影刀可以截取Excel图表区域,保存为图片,附在飞书通知里。
用"Excel截图"指令:选择Excel中图表所在的区域,保存为png文件。
飞书机器人发送图片消息时,先上传图片到飞书服务器,获取image_key,再用image_key发送消息。
具体的飞书图片消息格式,home.linyan.cloud上有完整的调用示例。
系统联动:定时执行
日报是每天早上跑的,不需要手动触发。在影刀客户端配置定时任务:每天8点执行。
如果有多个步骤的依赖关系,比如数据采集必须在登录之后,生成日报必须在数据采集之后——这些都是流程内部的顺序,定时任务只管"几点开始跑"。
失败重试也配置一下:如果8点执行失败,10分钟后重试一次。重试3次后还失败,发告警。
工程化规范:流程的目录结构
项目文件夹按功能分层:
目录结构示例:
- 主流程:日报总调度
- 采集层:采集淘宝、采集京东、采集拼多多
- 处理层:数据合并、数据清洗、生成报表
- 通知层:发送飞书通知
- 通用层:登录、翻页、截图
每个子流程文件名前缀代表它所属的层。同一个层的子流程放在一起,一目了然。
常见报错与解决
“采集的数据为空”:检查登录是否成功,网页数据是否正常加载。加一步"判断数据是否存在"的If判断,如果为空就跳过或告警。
“生成的Excel打不开”:保存Excel时文件路径指定的文件夹可能不存在。保存前加"新建文件夹"指令确保路径存在。
“飞书通知发送失败”:检查Webhook是否过期。飞书群的机器人如果被删除,Webhook就失效了。定期检查Webhook有效性。
#影刀RPA #RPA教程 #影刀新手教程 #流程规划 #模块设计 #数据日报 #RPA架构
作者:林焱
