Matrix 精选
Matrix 是少数派的写作社区, 我们主张分享真实的产品体验, 有实用价值的经验与思考. 我们会不定期挑选 Matrix 最优质的文章, 展示来自用户的最真实的体验和观点.
文章代表作者个人观点, 少数派仅对标题和排版略作修改.
最近换了新手机 (iPhone12 Pro), 在给手机重新安装应用, 重新跑起每天的工作流的时候, 发现了一个对我自己来说比较不方便的地方,
此前我用的是奇妙清单来管理我的日常工作和计划. 奇妙清单的日历订阅可以同步各个平台. 后来奇妙清单被 Microsoft 收购, 我也换成了 Microsoft TO DO. 总体上来说, 两款应用在使用上几乎没有区别. 不过在同步日历项这件事上, 真是非常痛苦. 我喜欢在工作一开始时规划整天的工作, 然后回家后可以在日历项里看到自己一天内完成的项目, 这是一件很有成就感的事情. 不过换成了 Microsoft TO DO 后, 无法同步日历项成为了心中永远的痛.
这里说一下背景, 我的设备分别是苹果手机, Mac 笔记本以及 Windows 台式机. 平时工作用的是 Mac, 回到家里常用的是 Windows . 同时, 由于通过 Siri 添加一个提醒事项实在是太方便了, 但是 Windows 平台无法使用. 我就想着能否将 iOS 的提醒事项和 Microsoft TO DO 打通, 然后再想办法把待办事项记录到日历中. 于是昨天花一个下午的时间研究了一下, 跑通了整个流程, 虽然有些小缺陷, 不过总体上效果还是比较满意的. 下文介绍我的折腾过程, 如果有更好的方案, 欢迎朋友们在评论区里指出~
TO DO 和 iOS 提醒事项的双向同步
首先要解决的事情是 TO DO 和 iOS 提醒事项的双向同步. 预期实现效果为我在 TO DO 里记录一个待办, 可以同步至 iOS 提醒事项, 反之亦然. 这一步是为了后续待办事项能够同步到日历中的一个关键,(如果不用 TO DO 也是可以的, 只是我的任务大部分都在 TO DO 上规划, 迁移成本比较大).
需要明确你的 TO DO 账号和你的 Outlook 邮箱账号是一致的, 只有符合这个要求, 才能同步. 首先我们到 iOS14 的「设置」-> 「邮件」-> 「账户」-> 「添加账户」里添加你的 Outlook 账号. 添加完账号后, 记得把 日历 , 提醒事项 的同步打开:
添加 Outlook 账户
然后回到设置界面, 找到「提醒事项」-> 「默认列表」, 在这里把列表改成 Outlook 下面的列表.
设置默认提醒事项列表
到这一步, 已经能够实现 iOS 的提醒事项和 Microsoft TO DO 的双向同步了. 可以试试通过 Siri 来记录提醒事项:「Siri xx 点的时候提醒我 balabala」. 只需一点同步的时间, 就能在 TO DO 里看到对应的待办事项了.(虽然不支持子任务, 不过大部分情况下足够了) 同时, 你在 TO DO 里建立的任务, 也会很快反应到 iOS 的提醒事项中, 实现了双向同步.
iOS 提醒事项同步至微软日历
完成了上述操作后, 我们需要把 iOS 提醒事项同步至日历中. 首先, 跟提醒事项一样, 我们需要修改默认日历为 Outlook 的日历, 后续日历项添加后才会同步至微软的日历中. 进入 iOS 设置界面, 找到「日历」-> 「默认日历」, 将其修改为 Outlook 日历:
设置默认日历项
第二步, 需要把提醒事项里的事项同步到日历中. 这一步是最麻烦的, 我目前找到了三种办法
用 IFTTT 同步, 创建一个 applet, 如果有「任何新的提醒事项」就「创建一个日历项」. 但是可自定义程度不高 (比如改变状态), 我就没有继续了.
用 scriptable 来实现, 可以参考:《真香! 自动同步 iOS 的提醒事项和日历, 显示日打卡内容》 https://zhuanlan.zhihu.com/p/169566930
用 JSBox 来实现, 本文介绍的是这种方法 (因为脚本是我自己写的 :-D)
代码我已经开源 https://github.com/Molunerfinn/JSBox-Tools , 可以用 Safari 打开这个 链接 下载脚本并安装至 JSBox . 这里就不解读源码了. 说一下脚本的实现逻辑:
首先读取一个月内的提醒事项, 并且需要有指定提醒日期的 (没有的话会有非常多干扰项)
读取一个月内的日历项. 二者进行比对, 如果发现日历项里不存在某个提醒事项, 就根据提醒事项指定的提醒日期, 时间创建一个日历项. 如果发现提醒事项已经存在, 就根据提醒事项的状态 (比如已完成), 更新日历项的完成时间.
注意, 这相当于是一个一次性写入的过程, 并不会因为日历项的删除而同步待办事项的删除, 因为日历项里有一些并非是待办事项.
那么问题来了, 这个同步的过程要怎么触发? 聪明的你应该能想到, 苹果的「快捷指令」. 首先, 你可以选择手动触发, 那么可以通过快捷指令运行这个 JSBox 脚本. 但是这样依然很麻烦, 有没有自动的方案? 有, 用「自动化」.
打开「快捷指令」, 选择第二个 tab「自动化」, 添加一个自动化. 这个自动化逻辑是, 当我们关闭提醒事项这个 App 的时候, 自动同步提醒事项内容到日历去. 下面介绍这个自动化的创建步骤:
点击自动化页面右上角的「+」进入创建界面
点击「创建个人自动化」
找到「App」这一项, 这一项的说明是「例如:"打开或关闭'天气'时"」, 点击进入
然后我们在 App 选择的时候选择「提醒事项」, 下面触发条件的选择「已关闭」, 这个的意思是当 「提醒事项被关闭时」, 这个自动化将会被触发:
自动化设置
5. 然后进入下一页后, 我们选择具体要执行的动作, 这里直接选择「运行 JSBox 脚本」, 找到「SyncToDo」这个脚本. 注意有个小细节, 如果运行的时候不想打开 JSBox, 可以把这里的「运行时显示」给关闭:
关闭 运行时显示
OK, 至此, 我们已经能够实现整个工作流了. 我现在可以在任何一台设备上的 TO DO 添加我的任务, 就可以同步至 iOS 的提醒事项. 只要一关闭提醒事项, 我的 iOS 日历, 微软日历就都能获得我的待办事项了:
iOS 日历同步提醒事项后的结果
微软日历同步后的结果
程序猿改变世界, 耶.
小彩蛋
文章到上述已经把流程介绍完了, 不过还有一个小 trick 也想分享给大家, 可以看需要自取哈.
上文中我们设定了每次在退出「提醒事项」的时候, 自动同步信息过去. 由于使用的是快捷指令的自动化, 每次运行的时候虽然不会打开 JSBox , 但是通知栏会有一个快捷指令正在运行的通知. 我希望同步都是「偷偷地」进行的, 不需要每次都来提醒我, 因此我想着把快捷指令的通知给关掉. 就在我按正常思路去关闭快捷指令的通知时, 发现苹果居然把快捷指令的通知设置入口给藏起来了! 好在万能的搜索引擎让我找到了一种方法:
打开设置, 进入「屏幕使用时间」
点击「查看所有活动」
屏幕使用时间
3. 然后把顶部的时间范围选择「每周」
4. 页面拉到最下面, 有个「通知」的区域, 在这里的 App 列表中找到「快捷指令」, 点击进入, 就能看到快捷指令的「通知」设置了, 关闭即可.
不过需要注意的是, 关了之后, 我也没有找到办法再打开, 所以有需要的朋友自取哈~
来源: https://sspai.com/post/63919