名称: omnifocus
描述: 通过 Omni Automation 管理 OmniFocus 的任务、项目和文件夹。用于任务管理、待办清单、项目跟踪、GTD 工作流,以及添加/完成/编辑任务、设置截止日期、管理标签和重复任务。需要在 macOS 上安装 OmniFocus。
通过 JXA (JavaScript for Automation) 控制 OmniFocus。
# 通过包装脚本运行
./scripts/of <命令> [参数...]
# 或直接运行
osascript -l JavaScript ./scripts/omnifocus.js <命令> [参数...]
| 命令 | 描述 |
|---|---|
inbox |
列出收件箱任务 |
folders |
列出所有文件夹 |
projects [文件夹] |
列出项目,可按文件夹筛选 |
tasks <项目> |
列出项目中的任务 |
tags |
列出所有标签 |
today |
列出今日到期或已逾期的任务 |
flagged |
列出已标记的未完成任务 |
search <查询> |
按名称搜索任务 |
info <任务ID> |
获取任务完整详情 |
| 命令 | 描述 |
|---|---|
add <名称> [项目] |
添加任务到收件箱或指定项目 |
newproject <名称> [文件夹] |
创建项目 |
newfolder <名称> |
创建顶级文件夹 |
newtag <名称> |
创建或获取标签 |
| 命令 | 描述 |
|---|---|
complete <任务ID> |
标记为完成 |
uncomplete <任务ID> |
标记为未完成 |
delete <任务ID> |
永久删除 |
rename <任务ID> <名称> |
重命名任务 |
note <任务ID> <文本> |
追加内容到备注 |
setnote <任务ID> <文本> |
替换备注内容 |
defer <任务ID> <日期> |
设置推迟日期 (YYYY-MM-DD) |
due <任务ID> <日期> |
设置截止日期 |
flag <任务ID> [true\|false] |
设置标记状态 |
tag <任务ID> <标签> |
添加标签(若不存在则创建) |
untag <任务ID> <标签> |
移除标签 |
move <任务ID> <项目> |
移动到指定项目 |
# repeat <任务ID> <方法> <间隔> <单位>
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
方法:fixed, due-after-completion, defer-after-completion
单位:days, weeks, months, years
所有命令均返回 JSON。成功响应包含 "success": true。错误响应包含 "error": "消息"。
{
"success": true,
"task": {
"id": "abc123",
"name": "任务名称",
"note": "备注内容",
"flagged": false,
"completed": false,
"deferDate": "2026-01-30",
"dueDate": "2026-02-01",
"project": "项目名称",
"tags": ["标签1", "标签2"],
"repeat": {"method": "fixed", "rule": "RRULE:FREQ=WEEKLY;INTERVAL=1"}
}
}
# 添加任务到收件箱
of add "购买杂货"
# 添加任务到指定项目
of add "审阅文档" "工作项目"
# 设置截止日期并标记
of due abc123 2026-02-01
of flag abc123 true
# 添加标签
of tag abc123 "紧急"
of tag abc123 "家庭"
# 创建重复任务
of add "每周回顾" "习惯"
of repeat xyz789 fixed 1 weeks
# 搜索并完成任务
of search "杂货"
of complete abc123
# 获取今日任务
of today
tag 命令时,若标签不存在会自动创建本技能主要使用 JavaScript for Automation (JXA) 执行操作,对于标签和重复任务操作则回退到 AppleScript(由于已知的 JXA 类型转换错误与这些特定 OmniFocus API 的兼容性问题)。
这种混合方法提供了:
- 易于解析的 JSON 输出
- 对标签名称中特殊字符的稳健转义处理
- 带有清晰消息的错误处理
首次运行: OmniFocus 可能会提示允许自动化访问。请在“系统设置”>“隐私与安全性”>“自动化”中启用。