将 Todoist 任务转换为公开的 Google Calendar 事件(使用 Google Apps Script + Sync Tokens)

发布: (2026年1月15日 GMT+8 22:35)
4 min read
原文: Dev.to

Source: Dev.to

Todoist 与 Google 日历的原生集成快速、双向,并且可以直接在日历中管理任务。
唯一的限制是:Todoist 创建的事件在 Google 日历中显示为私有。当你共享日历时,其他人只能看到通用的“忙碌”块。

完整可用脚本:

为什么要将 Todoist 事件设为公开?

  • 共享日历 – 同事或家人需要看到你在做什么,而不仅仅是你忙碌。
  • 多账户设置 – 私有事件在工作日历和个人日历之间合并不佳;公开事件提供更多上下文。
  • 日历委派 – 助理或伴侣可以根据实际任务和时间块进行安排。

该脚本会自动将 Todoist 创建的事件的可见性从 私有 切换为 公开

为什么不直接使用 iCal Feed?

Todoist 也提供 iCal 订阅,优势在于:

  • 设置更简单
  • 可见性通常已经类似公开

然而,iCal Feed 存在重大缺点:

  • 单向(只读): 在 Google 日历中的更改不会同步回 Todoist。
  • 同步慢: 更新可能会延迟数小时。
  • 无法在 Google 日历完成/编辑任务。

原生集成 提供:

  • 双向同步(在 Google 日历中的编辑会反映到 Todoist)
  • 近实时 更新
  • 能够直接在 Google 日历中 完成/调整任务

该脚本让你在保持这些优势的同时,将事件设为公开。

脚本工作原理

脚本(见 Gist)使用 Google 的 Calendar Advanced Servicesync tokens

  • 自动查找 你的 “Todoist” 日历。
  • 首次运行: 获取最近 30 天的事件并将私有 → 公开。
  • 后续运行: 使用 sync token 只检索新建或已修改的事件。
  • 高效: 初始运行后不再进行完整日历扫描。
  • 未来日期任务: 即使是几年后的任务,也会在创建时立即处理。

快速设置(≈5 分钟)

  1. 前往 New project
  2. 添加服务: Resources → Advanced Google services → 启用 Google Calendar API
  3. 从 Gist 复制脚本并粘贴到 Code.gs
  4. 运行 updateTodoistEvents() 一次以授权脚本。
  5. 添加触发器:Time‑driven,每 10‑15 分钟一次。

现在,新的 Todoist 事件会自动变为公开。

故障排除

问题解决方案
“未找到 Todoist 日历”在脚本中更新日历名称:cal.summary === 'YourCalendarName'
“API 调用失败”确保在 Advanced services 中已启用 Google Calendar API。
同步令牌错误脚本会自动重置无效令牌;如有需要,重新运行函数。

何时适合使用此方案

如果符合以下条件,请使用此解决方案:

✓ You use the native Todoist ↔ Google Calendar integration
✓ You share your calendar and want visible task details
✓ You need bi‑directional, real‑time sync
✓ You prefer a set‑and‑forget Apps Script solution

完整脚本及更新

完整脚本及后续更新可在以下地址获取:

欢迎在评论中点赞、fork 或分享你的改进(例如按项目或自定义日历名称进行过滤)。

Back to Blog

相关文章

阅读更多 »