欢迎光临
我们一直在努力

影刀RPA进阶教程_全局变量与动态参数的高级用法

影刀RPA进阶教程:全局变量与动态参数的高级用法——让流程在不同场景下自动适配

新手阶段,你的变量都在一个流程里传来传去。

稍微复杂的流程,拆了子流程之后,数据传递就乱套了。子流程A要改一个参数,子流程B也要用,你还得在每个流程里各设一遍。

全局变量就是解决这个问题的。

这篇文章讲清楚:全局变量是什么、怎么设、在什么地方用、和普通变量的区别,以及几个会让你想删库重写的坑。


在这里插入图片描述

一、全局变量 vs 普通变量:一句话区分

变量类型作用范围生命周期典型用法
普通变量 只在当前子流程里有效 子流程结束就销毁 循环计数器、临时值
全局变量 整个应用的所有子流程都能读写 应用运行期间一直存在 登录状态、配置参数、执行计数

简单说:你要让多个子流程共享同一个值,就用全局变量。


二、如何创建全局变量

在影刀界面上创建

打开你的应用 → 点击左侧「全局变量」面板(是一个地球图标)。

在这里插入图片描述

点击「新建全局变量」→ 输入变量名(比如 当前账号)→ 选择类型(字符串/数字/布尔/列表/字典)。

在流程里给全局变量赋值

在任意子流程里,拖入「设置变量」指令,注意选变量时切换到「全局变量」标签页:

设置全局变量 "当前账号" = "admin@example.com"

拼多多店群自动化报活动上架!

在流程里读取全局变量

同样在任意子流程里,引用变量时选全局变量即可:

在这里插入图片描述

输出日志(全局变量.当前账号)
# 输出: admin@example.com

整个流程里任何位置都能读写,不用再传参数。


三、三个最实用的全局变量场景

场景1:登录态统一管理

多子流程的应用,登录状态必须全局共享。

# 子流程A:登录
打开网页("https://seller.example.com")
输入文本("账号输入框", "user123")
输入文本("密码输入框", "pass456")
点击元素("登录按钮")
等待元素出现("首页标识", 5)

![在这里插入图片描述](https://iblog.csdnimg.cn/direct/fe31dded69094ef597e5ad70a6d15b6c.png#pic_center)

# 登录成功后设置全局状态
设置全局变量 "已登录" = True
设置全局变量 "登录账号" = "user123"
设置全局变量 "登录时间" = 当前时间()

# 子流程B:数据采集(读取登录状态)
如果 全局变量.已登录 == False:
输出日志("未登录,先执行登录流程")
调用子流程("A_登录")
否则:
输出日志(f"当前登录账号:{全局变量.登录账号},继续采集")

# 核心采集逻辑
采集商品数据()

子流程B不用知道登录细节,只检查全局状态就够了。这是模块化设计的正确姿势。

场景2:全局配置参数

把可能会变的值集中在全局变量里,以后改配置不用翻遍所有子流程。

# 一个地方设置所有配置
设置全局变量 "目标平台" = "拼多多" # 字符串
设置全局变量 "采集页数" = 10 # 数字
设置全局变量 "最小销量阈值" = 100 # 数字
设置全局变量 "关键词列表" = ["连衣裙", "T恤", "牛仔裤"] # 列表
设置全局变量 "结果文件路径" = "D:\\\\数据\\\\采集结果.xlsx" # 字符串

# 采集子流程里直接用
关键词列表 = 全局变量.关键词列表

遍历列表(关键词列表, 当前关键词):
搜索(当前关键词)

循环计数 = 0
条件循环(循环计数 < 全局变量.采集页数):
采集当前页(全局变量.最小销量阈值)
翻页()
循环计数 = 循环计数 + 1

写入剩余关键词(关键词, "已完成")

# 最后导出
导出表格(采集表, 全局变量.结果文件路径)

以后要改采集页数或关键词,只改全局变量面板里的值就行,不用动流程逻辑。

场景3:执行计数器

在这里插入图片描述

多任务并行时,用一个全局计数器跟踪进度。

# 初始化
设置全局变量 "总任务数" = 列表长度(任务列表)
设置全局变量 "已完成数" = 0
设置全局变量 "失败数" = 0

# 每个任务处理完
设置全局变量 "已完成数" = 全局变量.已完成数 + 1

# 任务失败时
设置全局变量 "失败数" = 全局变量.失败数 + 1

# 所有任务结束后,汇总日志
输出日志(f"执行完毕。总任务:{全局变量.总任务数},成功:{全局变量.已完成数},失败:{全局变量.失败数}")

配合飞书通知推送这个统计结果,就是一套轻量级的任务监控。


四、全局变量的坑

坑1:类型混乱

全局变量没有强制类型约束。你在子流程A里设了数字类型,子流程B里不小心赋值成字符串,后面的逻辑全部崩。

在这里插入图片描述

解法:起名时加上类型前缀。

全局变量命名约定:
num_采集页数 — 数字
str_目标平台 — 字符串
bool_已登录 — 布尔
list_关键词 — 列表
dict_账号配置 — 字典

一眼就知道类型,避免赋值混乱。

坑2:忘记初始化

子流程里直接读一个还没赋值的全局变量,影刀不会报错,返回空值。但后面的判断逻辑出问题了你也查不到原因。

解法:在主流程最开头统一初始化所有全局变量。

# 主流程 — 全局变量初始化区
设置全局变量 "num_采集页数" = 0
设置全局变量 "str_目标平台" = ""
设置全局变量 "bool_已登录" = False
设置全局变量 "list_关键词" = []
设置全局变量 "str_文件路径" = ""
![在这里插入图片描述](https://iblog.csdnimg.cn/direct/036abd47dd50428d8c18290fadfbafc0.png#pic_center)

# 然后加载配置
加载配置文件()
# … 开始执行

永远不要让全局变量处于「未初始化」状态。

坑3:并发读写冲突

TEMU店群矩阵自动化运营核价报活动

多个子流程同时修改同一个全局变量,后执行的会覆盖先执行的。

这个问题在单线程的影刀流程里一般不会出现,但如果你用「并发调用子流程」,就得小心。

解法:对写入全局变量的操作加「临界区」概念——用同一个子流程统一写入,其他子流程只读。

# 不要这样(每个子流程都在写)
子流程A: 设置全局变量 "已完成数" = ...
子流程B: 设置全局变量 "已完成数" = ...

# 应该这样(统一写入入口)
子流程: 更新进度()
参数: 状态("成功"/"失败")
内部: 根据状态更新全局变量的计数器


在这里插入图片描述

五、动态参数的玩法

动态参数是说:流程运行时才决定的参数值,而不是写死在流程里。

玩法1:从配置文件读取参数

影刀支持读取JSON配置文件:

# config.json
{
"平台": "拼多多",
"采集页数": 10,
"关键词": ["连衣裙", "T恤"],
"输出路径": "D:\\\\数据\\\\pdd_result.xlsx"
}

# 影刀流程里读取
读取JSON文件("D:\\\\config.json") > 配置对象

设置全局变量 "str_目标平台" = 配置对象["平台"]
设置全局变量 "num_采集页数" = 配置对象["采集页数"]
设置全局变量 "list_关键词" = 配置对象["关键词"]
设置全局变量 "str_文件路径" = 配置对象["输出路径"]

改配置不用改流程,只改JSON文件就行。

在这里插入图片描述

玩法2:从命令行参数传值

影刀应用运行时可以接收启动参数:

# 获取启动参数
启动参数 = 获取应用启动参数()

如果 启动参数 不为空:
设置全局变量 "str_目标平台" = 启动参数["target"]
设置全局变量 "num_采集页数" = 整数(启动参数["pages"])

这样同一个应用,不同参数就能跑不同的任务——多套店铺共用一套流程。


六、推荐资源

  • 影刀官方文档:全局变量与流程参数的详细说明
  • 影刀学院:《流程模块化设计实战》,路径:客户端→学院→搜索"全局变量"
  • 在这里插入图片描述

作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

赞(0)
未经允许不得转载:171主机测评 » 影刀RPA进阶教程_全局变量与动态参数的高级用法
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址