影刀RPA进阶教程:流程参数实战——子流程之间如何传递数据
上篇讲了怎么拆子流程,这篇讲拆完之后最关键的问题:
B_搜索模块搜出了50个商品,C_采集模块怎么知道要采集这50个?
答案是流程参数——子流程的输入和输出。
但参数的用法有一些不直观的地方,跟普通编程语言不一样,新手容易踩坑。
一、流程参数是什么
影刀里每个子流程可以定义自己的"流程参数",相当于子流程对外暴露的接口。
- 输入参数:调用方传进来的值
- 输出参数:子流程处理完返回给调用方的值
在子流程上右键 → 属性 → 参数 → 添加。
店群矩阵自动化突破运营极限!
temu店群自动化报活动案例
二、定义和使用参数
步骤1:在子流程中定义参数
以D_数据清洗为例:
参数列表: 输入:原始数据表(类型:表格对象) 输入:是否去重(类型:布尔值,默认True) 输入:价格下限(类型:数字,默认0) 输出:清洗后数据表(类型:表格对象) 输出:清洗统计(类型:文本)步骤2:在子流程内部使用输入参数
参数定义好后,在子流程内部可以像普通变量一样使用:
# D_数据清洗 子流程内部# 输入参数"原始数据表"直接用如果 是否去重==True:去重处理(原始数据表)筛选价格(原始数据表,价格下限)# 把处理结果赋给输出参数设置变量("清洗后数据表",处理后的数据)设置变量("清洗统计","共处理"+str(原始条数)+"条,保留"+str(清洗后条数)+"条")步骤3:主流程调用时传递参数
# 主流程调用子流程("D_数据清洗",输入:原始数据表=采集结果,输入:是否去重=True,输入:价格下限=50,输出:清洗后数据表=最终数据,输出:清洗统计=本次统计)# 调用完后,主流程可以直接用输出参数输出日志(本次统计)# "共处理200条,保留185条"调用子流程("E_存Excel",输入:要保存的数据=最终数据)三、参数类型的选择
影刀的流程参数支持这些类型:
| 类型 | 适用场景 | 示例 |
|---|---|---|
| 文本 | 关键词、URL、路径 | “连衣裙”、“D:\导出.xlsx” |
| 数字 | 页数、价格阈值、超时时间 | 10、99.5、3000 |
| 布尔值 | 开关项 | True/False(是否去重、是否发通知) |
| 表格对象 | 影刀内置表格 | 采集结果表、清洗后数据表 |
| 元素对象 | 页面元素引用 | 登录按钮元素 |
| 列表 | 批量数据 | 关键词列表、URL列表 |
易错点:表格对象和文本字符串是不同类型。你不能把一个Excel文件路径字符串直接赋给"表格对象"类型的参数。
# ❌ 错误——字符串不等于表格对象调用子流程("D_数据清洗",输入:原始数据表="D:\数据.xlsx")# ✅ 正确——先在主流程中读取Excel得到表格对象读取Excel("D:\数据.xlsx")->表格对象 调用子流程("D_数据清洗",输入:原始数据表=表格对象)四、完整实战:一个传参的采集流程
# ===== 主流程 =====# 准备工作设置变量("搜索词","连衣裙")设置变量("目标页",10)设置变量("最低价格",30)新建Excel->全局结果表# 步骤1:搜索(子流程无输出,直接操作浏览器)调用子流程("B_搜索商品",输入:搜索关键词=搜索词)# 步骤2:采集(输出采集结果表格)调用子流程("C_列表采集",输入:翻页次数=目标页,输出:商品数据表=采集结果)# 步骤3:清洗(输入原始表,输出清洗后的表 + 统计信息)调用子流程("D_数据清洗",输入:原始数据表=采集结果,输入:最低价格=最低价格,输入:是否去重=True,输出:清洗后表=最终数据,输出:统计信息=统计)# 步骤4:导出调用子流程("E_存Excel",输入:数据表=最终数据,输入:文件名="D:\" + 搜索词 + "_" + 当前日期() + ".xlsx")# 步骤5:通知调用子流程("E_发通知",输入:消息内容=统计+",搜索词:"+搜索词)# ===== B_搜索商品 子流程 =====# 输入参数:搜索关键词(文本)打开网页("https://mobile.yangkeduo.com/search_result.html?search_key="+搜索关键词)等待元素出现("搜索结果列表",5秒)# ===== C_列表采集 子流程 =====# 输入参数:翻页次数(数字)# 输出参数:商品数据表(表格对象)新建Excel->商品数据表 写入行数据(商品数据表,["商品名称","价格","销量"])固定次数循环(翻页次数,当前页):采集当前页数据()# 翻页(省略具体采集代码,参考翻页文章)# ===== D_数据清洗 子流程 =====# 输入参数:原始数据表(表格对象)、最低价格(数字)、是否去重(布尔值)# 输出参数:清洗后表(表格对象)、统计信息(文本)# 用Python代码处理(在子流程里拖入Python代码指令)importpandasaspd# 将影刀表格对象转成Pandas DataFrame# (实际影刀中需要用专门的转换指令)df_clean=...# 过滤逻辑统计信息=f"原始{原始行数}条,清洗后{清洗行数}条(过滤掉价格低于{最低价格}元、重复数据等)"五、常见问题
问题1:输出参数没有正确赋值
子流程内部忘了给输出参数赋值,主流程拿到的值是空的。
检查:在子流程最后一步拖一个"设置变量",把处理结果赋给输出参数变量名。
问题2:参数名在不同子流程里重名
两个子流程都定义了"结果表"作为输出参数,主流程同时调了它们,第二个结果覆盖了第一个。
解决:主流程用不同的变量接收不同子流程的输出。输出:结果=采集结果和输出:结果=清洗结果,变量名不要一样。
问题3:布尔参数传错了
影刀里布尔参数的值是大写开头的True和False,不是全小写的true。
# ✅ 正确输入:是否去重=True# ❌ 错误(Python风格,影刀不认)输入:是否去重=true作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。