Files
Manuals/zh/autoscript/integration.mdx
T
KenanZhuandClaude 552f21ef8f docs: add v1.4.0 manual with macOS support, AutoScript, and global settings
- Add v1.4.0 version manual with full structure (开始/安装/配置/设置/功能/FAQ)
- Add macOS platform installation instructions and troubleshooting
- Add global settings chapter (open + appearance pages)
- Add AutoScript manual (syntax, functions, variables, editor, orchestrator, integration)
- Remove changelog (zh/changelog) as per v1.4.0 scope
- Update docs.json navigation for v1.4.0 version and AutoScript tab

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-14 21:22:58 +08:00

138 lines
4.2 KiB
Plaintext

---
title: "集成指南"
description: "AutoScript 与定时任务集成 - 执行流程、作用域与最佳实践"
---
了解如何将 AutoScript 脚本集成到定时任务中,以及脚本的执行时机、作用范围和注意事项。
## 执行流程
当定时任务触发时,AutoLibrary 按以下顺序执行:
1. **读取配置**:从用户配置文件中读取所有用户分组的预约参数
2. **遍历用户组**:对每个启用的用户组,遍历其中的每个启用用户
3. **执行 AutoScript**:对每个用户运行 AutoScript 脚本,动态调整变量值
4. **执行定时任务**:使用调整后的参数运行预约/签到/续约操作
```text
定时任务触发
│
├─ 用户组 A
│ ├─ 用户 1 → 执行 AutoScript → 预约/签到/续约
│ └─ 用户 2 → 执行 AutoScript → 预约/签到/续约
│
└─ 用户组 B
├─ 用户 3 → 执行 AutoScript → 预约/签到/续约
└─ 用户 4 → 执行 AutoScript → 预约/签到/续约
```
## 作用域
AutoScript 脚本的作用域限定为单个用户的单次执行:
- **每次执行独立**:脚本对每个用户独立运行,不同用户之间互不影响
- **不修改配置文件**:脚本对变量的修改仅存在于内存中,不会回写到 `user.json`
- **下次执行重置**:下次定时任务触发时,从配置文件重新读取原始值
## 配置方式
### 在定时任务中指定脚本
<Steps>
<Step title="打开定时任务管理">
点击主界面底部的 [<Icon icon="clock" />] 按钮。
</Step>
<Step title="添加或编辑任务">
点击 [**添加任务**] 创建新任务,或右键现有任务选择 [**编辑**]。
</Step>
<Step title="配置 AutoScript">
在编辑对话框中找到 [**AutoScript**] 区域,点击 [**编辑**] 按钮打开内置代码编辑器编写脚本。
脚本编写完成后直接内嵌保存至定时任务配置,无需管理外部文件。
</Step>
<Step title="保存配置">
点击 [**确认**] 保存任务配置。
</Step>
</Steps>
{/* TODO: 添加定时任务 AutoScript 配置截图 */}
![定时任务 AutoScript 配置](/images/v1.4.0/timer-autoscript-config.png)
## 典型示例
### 示例 1:始终预约明天的座位
```lua
-- 将预约日期设为明天
RESERVE_DATE = dateadd(datenow(), 1)
-- 设置固定时间段
RESERVE_BEGIN_TIME = time(9, 0)
RESERVE_END_TIME = time(21, 0)
```
### 示例 2:根据星期调整预约策略
配合定时任务的重复执行功能,可以为不同日子设置不同的预约参数。如果你需要基于实际星期进行判断,可以在脚本中根据日期特性调整:
```lua
-- 始终预约明天
RESERVE_DATE = dateadd(datenow(), 1)
-- 默认时间段
RESERVE_BEGIN_TIME = time(9, 0)
RESERVE_END_TIME = time(21, 0)
```
### 示例 3:条件性跳过用户
```lua
-- 如果当前时间已经超过上午 10 点,跳过该用户
if timenow() > time(10, 0) then
USER_ENABLE = false
end
```
### 示例 4:根据用户名差异化配置
```lua
if USERNAME == "20250101001" then
-- 用户 A 的预约策略
RESERVE_BEGIN_TIME = time(8, 0)
RESERVE_END_TIME = time(20, 0)
end
```
## 最佳实践
### 先调试,后配置
在将脚本关联到定时任务之前,使用编辑器的调试运行功能在模拟数据上验证脚本逻辑。
### 保持脚本简洁
每个脚本只关注一个明确的目标,避免在一个脚本中处理过多复杂逻辑。如果需要针对不同用户组执行不同逻辑,建议为每个用户组创建独立的定时任务。
### 注意沙箱限制
AutoScript 运行在受限的沙箱环境中,不能访问文件系统或执行系统命令。如果脚本需要外部数据(如个人日程表),请使用条件判断和工具函数实现。
### 验证类型兼容性
确保所有赋值操作的类型与目标变量声明的类型一致。类型错误会导致脚本执行失败并跳过该用户。
### 处理边缘情况
编写脚本时考虑边缘情况:
```lua
-- 确保开始时间不早于 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
```