OmniFocus Automation
2026-03-30
新闻来源:网淘吧
围观:16
电脑广告
手机广告
OmniFocus
通过JXA(JavaScript for Automation)控制OmniFocus。
要求
- macOS系统,并已安装OmniFocus 3或4
- OmniFocus必须正在运行(或将会自动启动)
快速参考
# Run via the wrapper script
./scripts/of <command> [args...]
# Or directly
osascript -l JavaScript ./scripts/omnifocus.js <command> [args...]
命令
列表/查询
| 命令 | 描述 |
|---|---|
inbox | 列出收件箱任务 |
folders | 列出所有文件夹 |
projects [folder] | 列出项目,可按文件夹筛选 |
tasks <project> | 列出项目中的任务 |
tags | 列出所有标签 |
today | 今日到期或已逾期的任务 |
flagged | 已标记的未完成任务 |
搜索 <查询> | 按名称搜索任务 |
信息 <任务ID> | 完整的任务详情 |
创建
| 命令 | 描述 |
|---|---|
添加 <名称> [项目] | 将任务添加到收件箱或项目 |
新建项目 <名称> [文件夹] | 创建项目 |
新建文件夹 <名称> | 创建顶级文件夹 |
新建标签 <名称> | 创建或获取标签 |
修改
| 命令 | 描述 |
|---|---|
完成 <任务ID> | 标记为完成 |
取消完成 <任务ID> | 标记为未完成 |
删除 <任务ID> | 永久删除 |
重命名 <任务ID> <名称> | 重命名任务 |
备注 <任务ID> <文本> | 追加备注 |
设置备注 <任务ID> <文本> | 替换备注 |
推迟 <任务ID> <日期> | 设置推迟日期 (YYYY-MM-DD) |
截止 <任务ID> <日期> | 设置截止日期 |
标记 <任务ID> [真|假] | 设置标记状态 |
添加标签 <任务ID> <标签> | 添加标签 (若不存在则创建) |
移除标签 <任务ID> <标签> | 移除标签 |
移动 <任务ID> <项目> | 移动到项目 |
重复
# repeat <taskId> <method> <interval> <unit>
of repeat abc123 fixed 1 weeks
of repeat abc123 due-after-completion 2 days
of repeat abc123 defer-after-completion 1 months
of unrepeat abc123
方法:固定,完成后设置截止日期,完成后设置推迟日期
单位:天,周,月,年

输出格式
所有命令均返回JSON。成功响应包含"success": true。错误包含"error": "message"。
{
"success": true,
"task": {
"id": "abc123",
"name": "Task name",
"note": "Notes here",
"flagged": false,
"completed": false,
"deferDate": "2026-01-30",
"dueDate": "2026-02-01",
"project": "Project Name",
"tags": ["tag1", "tag2"],
"repeat": {"method": "fixed", "rule": "RRULE:FREQ=WEEKLY;INTERVAL=1"}
}
}
示例
# Add task to inbox
of add "Buy groceries"
# Add task to specific project
of add "Review docs" "Work Projects"
# Set due date and flag
of due abc123 2026-02-01
of flag abc123 true
# Add tags
of tag abc123 "urgent"
of tag abc123 "home"
# Create recurring task
of add "Weekly review" "Habits"
of repeat xyz789 fixed 1 weeks
# Search and complete
of search "groceries"
of complete abc123
# Get today's tasks
of today
备注
- 任务ID是OmniFocus的内部ID(在所有任务响应中返回)
- 日期使用ISO格式:YYYY-MM-DD
- 项目和文件夹名称区分大小写
- 标签在使用
标签命令时,如果不存在会自动创建 - 所有输出均为JSON,便于解析
技术细节
此技能主要使用JavaScript for Automation (JXA)执行多数操作,同时针对标签和重复操作采用AppleScript作为备用方案(这是由于已知的JXA在与这些特定OmniFocus API交互时存在类型转换问题)。
这种混合方法提供了:
- 易于解析的JSON输出
- 对标签名称中特殊字符的稳健转义处理
- 附带清晰提示信息的错误处理机制
首次运行时:OmniFocus可能会请求允许自动化访问。请在系统设置 > 隐私与安全性 > 自动化中启用此权限。
文章底部电脑广告
手机广告位-内容正文底部
上一篇:Table Image
下一篇:LLM Supervisor


微信扫一扫,打赏作者吧~