跳转到主要内容
了解如何将 AutoScript 脚本集成到定时任务中,以及脚本的执行时机、作用范围和注意事项。

执行流程

当定时任务触发时,AutoLibrary 按以下顺序执行:
  1. 读取配置:从用户配置文件中读取所有用户分组的预约参数
  2. 遍历用户组:对每个启用的用户组,遍历其中的每个启用用户
  3. 执行 AutoScript:对每个用户运行 AutoScript 脚本,动态调整变量值
  4. 执行定时任务:使用调整后的参数运行预约/签到/续约操作
定时任务触发

  ├─ 用户组 A
  │   ├─ 用户 1 → 执行 AutoScript → 预约/签到/续约
  │   └─ 用户 2 → 执行 AutoScript → 预约/签到/续约

  └─ 用户组 B
      ├─ 用户 3 → 执行 AutoScript → 预约/签到/续约
      └─ 用户 4 → 执行 AutoScript → 预约/签到/续约

作用域

AutoScript 脚本的作用域限定为单个用户的单次执行:
  • 每次执行独立:脚本对每个用户独立运行,不同用户之间互不影响
  • 不修改配置文件:脚本对变量的修改仅存在于内存中,不会回写到 user.json
  • 下次执行重置:下次定时任务触发时,从配置文件重新读取原始值

配置方式

在定时任务中指定脚本

1

打开定时任务管理

点击主界面底部的 [] 按钮。
2

添加或编辑任务

点击 [添加任务] 创建新任务,或右键现有任务选择 [编辑]。
3

配置 AutoScript

在编辑对话框中找到 [AutoScript] 区域,点击 [编辑] 按钮打开内置代码编辑器编写脚本。 脚本编写完成后直接内嵌保存至定时任务配置,无需管理外部文件。
4

保存配置

点击 [确认] 保存任务配置。
定时任务 AutoScript 配置

典型示例

示例 1:始终预约明天的座位

-- 将预约日期设为明天
RESERVE_DATE = dateadd(datenow(), 1)

-- 设置固定时间段
RESERVE_BEGIN_TIME = time(9, 0)
RESERVE_END_TIME = time(21, 0)

示例 2:根据星期调整预约策略

配合定时任务的重复执行功能,可以为不同日子设置不同的预约参数。如果你需要基于实际星期进行判断,可以在脚本中根据日期特性调整:
-- 始终预约明天
RESERVE_DATE = dateadd(datenow(), 1)

-- 默认时间段
RESERVE_BEGIN_TIME = time(9, 0)
RESERVE_END_TIME = time(21, 0)

示例 3:条件性跳过用户

-- 如果当前时间已经超过上午 10 点,跳过该用户
if timenow() > time(10, 0) then
    USER_ENABLE = false
end

示例 4:根据用户名差异化配置

if USERNAME == "20250101001" then
    -- 用户 A 的预约策略
    RESERVE_BEGIN_TIME = time(8, 0)
    RESERVE_END_TIME = time(20, 0)
end

最佳实践

先调试,后配置

在将脚本关联到定时任务之前,使用编辑器的调试运行功能在模拟数据上验证脚本逻辑。

保持脚本简洁

每个脚本只关注一个明确的目标,避免在一个脚本中处理过多复杂逻辑。如果需要针对不同用户组执行不同逻辑,建议为每个用户组创建独立的定时任务。

注意沙箱限制

AutoScript 运行在受限的沙箱环境中,不能访问文件系统或执行系统命令。如果脚本需要外部数据(如个人日程表),请使用条件判断和工具函数实现。

验证类型兼容性

确保所有赋值操作的类型与目标变量声明的类型一致。类型错误会导致脚本执行失败并跳过该用户。

处理边缘情况

编写脚本时考虑边缘情况:
-- 确保开始时间不早于 7:30
if RESERVE_BEGIN_TIME < time(7, 30) then
    RESERVE_BEGIN_TIME = time(7, 30)
end

-- 确保结束时间不晚于 22:30
if RESERVE_END_TIME > time(22, 30) then
    RESERVE_END_TIME = time(22, 30)
end