十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

gogcli 任务管理指南:在终端中全面驾驭 Google Tasks 的 `gog tasks` 命令族

gogcli 任务管理指南:在终端中全面驾驭 Google Tasks 的 `gog tasks` 命令族 gogcli 任务管理指南在终端中全面驾驭 Google Tasks 的gog tasks命令族【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli本文基于 gogcli 仓库 docs/commands/gog-tasks.md 及其子命令文档结合 internal/cmd/tasks.go、internal/cmd/tasks_lists.go 与 internal/googleapi/tasks.go 等源码展开讲解。读者将掌握gog tasks的完整命令结构、全局 Flag 语义、CRUD 与任务状态流转操作以及如何借助-j/--json、-p/--plain等输出模式将 Google Tasks 深度集成进脚本与 Agent 工作流。一、gog tasks是什么gog tasks是 gogcliGoogle Workspace in your terminal提供的 Google Tasks 命令入口用于在终端中完成 Google Tasks 的读取、创建、修改、删除与任务列表管理。其命令结构为gog tasks (task) command [flags]其中task为可选冗余词两个括号内的词tasks/task均可作为命令前缀方便自然语言式输入与脚本记忆。从源码看整个命令族由 internal/cmd/tasks.go 中的TasksCmd结构体统一声明底层通过 internal/googleapi/tasks.go 中的NewTasks()调用google.golang.org/api/tasks/v1官方库创建服务实例按账户--account获取授权后执行 API 调用。1.1 完整的子命令一览子命令功能别名gog tasks lists管理任务列表task list-gog tasks list列出任务lsgog tasks get获取单个任务info,showgog tasks add添加任务creategog tasks update更新任务edit,setgog tasks done标记任务已完成completegog tasks undo标记任务需要行动恢复未完成uncomplete,undonegog tasks delete删除任务rm,del,removegog tasks clear清除已完成任务-gog tasks raw输出 Google Tasks API 原始 JSON 响应-该列表与TasksCmd结构体internal/cmd/tasks.go中定义的字段一一对应其中的别名aliases在源码中均有声明例如List的别名是ls、Add的别名是create。二、任务列表Task List管理gog tasks listsGoogle Tasks 的任务必须归属于某个任务列表因此操作的第一步通常是列出或创建任务列表。gog tasks lists本身带两个子命令gog tasks (task) lists commandgog tasks lists list- 列出任务列表默认命令default:withargs声明于 internal/cmd/tasks_lists.gogog tasks lists create- 创建任务列表别名add,new2.1 列出任务列表gog tasks lists list关键 FlagFlag类型默认值说明--max/--limitint64100最大结果数最大允许 1000--page/--cursorstring分页令牌--all/--all-pages/--allpagesboolfalse拉取所有分页--fail-empty/--non-empty/--require-resultsbool无结果时以退出码 3 结束在 internal/cmd/tasks_lists.go 的TasksListsListCmd中--max默认值为 100且会在Run()中校验c.Max 0时报错max must be 0。分页由loadPagedItems(c.Page, c.All, fetch)统一处理传入起始页令牌并决定是否自动翻页文本输出模式下每次分页后都会打印nextPageToken提示使用--all/--all-pages拉取全部。文本输出格式为两列 TSVID TITLE tasklist-id My Tasks2.2 创建任务列表gog tasks lists create 任务列表标题TasksListsCreateCmdinternal/cmd/tasks_lists.go接收任意多个位置参数并拼接为标题空标题会报错empty title随后调用svc.Tasklists.Insert(tasks.TaskList{Title: title})完成创建输出新建列表的id与title。该命令也支持--dry-run预览对应dryRunExit(ctx, flags, tasks.lists.create, ...)不会真正写入。三、任务 CRUD 操作3.1 列出任务gog tasks listgog tasks (task) list (ls) tasklistId [flags]list是使用频率最高的子命令Filter 与分页能力非常完整Flag类型默认值说明--max/--limitint6420最大结果数最大允许 100--page/--cursorstring分页令牌--all/--all-pages/--allpagesbool拉取所有分页--show-assignedbooltrue是否包含分配给当前用户的任务--show-completedbooltrue是否包含已完成任务部分客户端需配合--show-hidden--show-deletedbool是否包含已删除任务--show-hiddenbool是否包含隐藏任务--completed-min/--completed-maxstring完成日期区间过滤RFC3339--due-min/--due-maxstring截止日期区间过滤RFC3339--updated-minstring更新时间下限过滤RFC3339--fail-empty/--non-empty/--require-resultsbool无结果时退出码 3典型用法# 列出默认任务列表中的 50 条任务 gog tasks list tasklistId --max 50 # 仅看今天到期RFC3339 时间戳范围过滤 gog tasks list tasklistId --due-min 2026-09-17T00:00:00Z --due-max 2026-09-17T23:59:59Z # 包含已完成与已删除任务并拉取全部分页 gog tasks list tasklistId --show-completed --show-deleted --all # 供脚本使用无结果时以退出码 3 失败 gog tasks list tasklistId --fail-empty -j3.2 获取单个任务gog tasks getgog tasks (task) get (info,show) tasklistId taskId按任务 ID 获取详情别名info/show与源码中Get TasksGetCmd ... aliases:info,show一致。适合在拿到任务 ID 后查看其完整属性标题、备注、截止时间、状态、父任务等。3.3 添加任务gog tasks addgog tasks (task) add (create) tasklistId [flags]核心参数Flag类型必填/默认说明--titlestring必填任务标题--notesstring任务备注/描述--duestring截止时间RFC3339 或 YYYY-MM-DDGoogle Tasks 可能忽略时间部分--parentstring父任务 ID作为子任务创建--previousstring前一个兄弟任务 ID控制排序位置--repeatstring批量生成重复任务daily / weekly / monthly / yearly--recurstring--repeat的别名--recur-rrulestring通过 RRULE 指定重复节奏支持 FREQ 可选 INTERVAL--repeat-countint生成的出现次数需配合重复类参数--repeat-untilstring重复截止日期/时间RFC3339 或 YYYY-MM-DD需配合重复类参数示例# 添加一条最简单任务 gog tasks add tasklistId --title 写季度报告 # 带截止时间与备注 gog tasks add tasklistId --title 提交报销单 --due 2026-09-30 --notes 附上发票扫描件 # 创建子任务 gog tasks add tasklistId --title 设计数据库表 --parent parentTaskId # 生成未来四周的每周重复任务 gog tasks add tasklistId --title 周会纪要整理 --repeat weekly --repeat-count 4关于重复任务的实现仓库中存在 internal/cmd/tasks_repeat.go 与 internal/cmd/tasks_repeat_test.go从源码结构看--repeat/--recur/--recur-rrule三组参数统一收敛到同一套物化重复任务逻辑Materialize repeated tasks即在本机批量创建多条具体任务而非依赖 Google Tasks 原生重复规则--repeat-count与--repeat-until都要求同时传入重复节奏参数否则应会被参数校验拒绝。添加计划的构造逻辑位于 internal/cmd/tasks_add_plan.go并有配套的 internal/cmd/tasks_add_plan_test.go 覆盖测试。3.4 更新任务gog tasks updategog tasks (task) update (edit,set) tasklistId taskId [flags]Flag类型说明--titlestring新标题传空字符串清除--notesstring新备注传空字符串清除--duestring新截止时间RFC3339 或 YYYY-MM-DD传空清除--statusstring新状态needsAction或completed传空清除示例gog tasks update tasklistId taskId --title 季度报告最终版 --due 2026-09-28 gog tasks update tasklistId taskId --status completed gog tasks update tasklistId taskId --due # 清除截止时间更新计划的生成逻辑集中在 internal/cmd/tasks_update_plan.go其行为由 internal/cmd/tasks_update_plan_test.go 验证。3.5 状态流转gog tasks done与gog tasks undogog tasks (task) done (complete) tasklistId taskId gog tasks (task) undo (uncomplete,undone) tasklistId taskIddone将任务标记为已完成对应 Google Tasks 的completed状态undo将任务恢复为需要行动needsAction。两者与update --status completed/needsAction等价但语义更明确、更省输入适合作为交互式终端与脚本里的快捷指令。3.6 删除与清除gog tasks delete与gog tasks cleargog tasks (task) delete (rm,del,remove) tasklistId taskId # 删除单条任务 gog tasks (task) clear tasklistId # 清除该列表下全部已完成任务delete与clear都属于破坏性操作。gogcli 为此提供了一层安全机制使用-y/--force/--assume-yes/--yes可跳过确认提示-n/--dry-run/--dryrun/--noop/--preview则只打印将要执行的动作并以成功退出不真正调用 API。在无人值守或 CI 场景下建议配合--no-input/--non-interactive使用——遇到需要确认或缺失参数时直接失败而非挂起等待输入。四、无损取数gog tasks rawgog tasks (task) raw tasklistId taskId [flags]raw直接调用 Google Tasks API 的Tasks.Get并输出无损 JSON适合脚本解析与 LLM大语言模型消费。与普通get不同raw保留 API 返回的全部字段而不做投影或格式化避免信息丢失。Flag类型说明--prettybool美化输出 JSON默认紧凑单行示例# 紧凑单行 JSON便于管道处理 gog tasks raw tasklistId taskId # 人类可读的多行 JSON gog tasks raw tasklistId taskId --prettyTasksRawCmd在 internal/cmd/tasks_raw.go 中实现测试见 internal/cmd/tasks_raw_test.go。五、全局 Flag所有gog tasks子命令通用以下 Flag 在gog tasks及其全部子命令中均可用来自全局RootFlags统一由 CLI 框架kong解析Flag类型默认值说明--access-tokenstring直接使用给定的访问令牌绕过已存储的刷新令牌令牌约 1 小时过期-a/--account/--acctstring账户邮箱、别名或auto用于已认证的 Google API 命令--clientstringOAuth 客户端名称选择对应的已存凭据 令牌桶--colorstringauto颜色输出auto/always/never--disable-commandsstring逗号分隔的禁用命令列表支持点路径-n/--dry-run/--dryrun/--noop/--previewbool不实际改动打印预期动作并成功退出--enable-commandsstring逗号分隔的启用命令前缀列表支持点路径限制 CLI 可用范围--enable-commands-exactstring逗号分隔的精确启用命令列表父命令不会启用其子命令-y/--force/--assume-yes/--yesbool跳过破坏性命令的确认--gmail-no-sendboolfalse阻止 Gmail 发送操作Agent 安全用途-h/--helpkong.helpFlag显示上下文相关帮助--homestring覆盖 gogcli 配置/数据/状态/缓存根目录等价于GOG_HOME-j/--json/--machineboolfalse向 stdout 输出 JSON脚本友好--no-input/--non-interactive/--noninteractivebool永不提示直接失败适合 CI-p/--plain/--tsvboolfalse输出稳定、可解析的 TSV 文本无颜色--quota-projectstring用于计费的 Google Cloud 项目以X-Goog-User-Project头发送部分 API 在--access-token或 ADC 场景下必须--readonlyboolfalse运行时阻止一切变更类 API 请求auth add时也会申请只读 OAuth 范围--results-onlyboolJSON 模式下只输出主结果丢弃nextPageToken等信封字段--select/--pick/--projectstringJSON 模式下选择逗号分隔的字段尽力而为支持点路径多数命令推荐用--fields-v/--verbosebool开启详细日志--versionkong.VersionFlag打印版本并退出--wrap-untrustedboolfalseJSON/raw 输出中将获取到的文本字段包上外部不可信内容标记5.1 关键全局 Flag 的实战语义账户与凭据多账户场景下用-a/--account指定邮箱或别名--client与 OAuth 客户端凭据绑定--access-token适用于临时令牌1 小时有效企业环境可用--quota-project指定计费项目。输出模式三件套-j/--json输出 JSON带nextPageToken等信封字段配合--results-only可只留主结果、-p/--plain输出 TSV、默认则是带颜色的表格。仓库中列表类命令如TasksListsListCmd在 JSON 模式下统一输出{tasklists: [...], nextPageToken: ...}结构可直接用jq等工具继续处理。安全与只读--readonly在运行时拦截一切写请求内部由 API 层统一把关--dry-run走dryRunExit(...)打印动作后退出--enable-commands/--enable-commands-exact/--disable-commands可裁剪命令面配合--gmail-no-send等组合成面向 Agent 的受限配置。CI 友好--no-input保证非交互失败--fail-empty让无结果以退出码 3 表达便于脚本判断语义无结果 ≠ 出错。六、脚本与 Agent 集成实战将 gogcli 的 JSON/TSV 输出与上述 Flag 组合可以构建完全无交互的任务工作流# 1) 拿到任务列表 ID LIST_ID$(gog tasks lists list -j --results-only | jq -r .tasklists[0].id) # 2) 批量创建任务注意 --no-input 防止挂起 gog tasks add $LIST_ID --title 晨会同步 --due 2026-09-18T09:00:00Z --no-input -j # 3) 列出今天到期的任务交给 jq 统计 gog tasks list $LIST_ID --due-min 2026-09-17T00:00:00Z --due-max 2026-09-17T23:59:59Z -j \ | jq -r .tasks[] | \(.id)\t\(.title) # 4) 逐条标记完成 gog tasks done $LIST_ID $TASK_ID --no-input # 5) 收尾清理已完成任务 gog tasks clear $LIST_ID -y --no-input对于 LLM/Agent 场景gog tasks raw tasklistId taskId --pretty能给出无信息损失的完整任务对象而--wrap-untrusted会在输出文本字段时加上外部不可信内容标记帮助下游系统识别来自 Google 的数据边界。七、验证与进一步探索命令级测试internal/cmd/execute_tasks_test.go覆盖命令分发internal/cmd/tasks_items_*_test.go 系列覆盖列表项校验与 JSON 输出internal/cmd/tasks_text_test.go 验证文本输出格式internal/cmd/tasks_validation_test.go 覆盖参数校验。底层服务NewTasks(ctx, email)internal/googleapi/tasks.go负责按账户创建官方tasks/v1服务其封装逻辑与测试见 internal/googleapi/tasks_test.go。在线回归脚本scripts/live-tests/tasks.sh提供面向真实 Google 账户的任务命令冒烟测试。命令索引完整的命令族文档位于 docs/commands/README.md各子命令详情见 docs/commands/gog-tasks-add.md、docs/commands/gog-tasks-list.md、docs/commands/gog-tasks-lists.md 等页面。提示docs/commands/下的命令文档均由gog schema --json生成运行make docs-commands即可同步更新手工编辑会被覆盖。【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表