Notion实现循环事件、重复事件、每日打卡

2021-08-03 coding notion 日历

优雅的Notion不优雅

其实我一直都在思考,使用什么样的工具可以使我的生活变得井井有条,变得有效率、有条理、且精致。从功能上来讲,我希望能有效管理我的日程、待办事项、记笔记等等。当然,我对于工具是非常挑剔的,使用过QQ全家桶、Outlook全家桶、Google全家桶还有Apple全家桶。当然他们各自有各自的好,但也有我不能接受的地方。且不说Google不能满足我对随时取用的要求,QQ邮箱的日程和联系人又太过简陋。苹果的工具非常优雅,也很好用;可自从我更换小米手机之后(虽然这些天又换回了iPhone12),我就有意从苹果的生态中脱离出来,生怕被绑定。更何况生产力的PC电脑上是难以使用苹果的软件的。于此,我其实长期使用Outlook全家桶,还是365的会员,算是这诸多产品中给我体验最好的产品。直到我遇到了Notion,我认为我找到了一个可以同时满足我这些需求的,一个跨平台的、好用且优雅的软件。

**当然,这只是我以为。**当设置好了database,打算往里面填充日程的时候,我很快发现了Notion在重复日程、循环事件、每日打卡的功能是缺失的!我不相信Notion功能是残缺的,我在网络上搜索着最优姿势,但是我很快被打脸了。Notion的功能缺失是残缺的,特别是日程上。三年来不断有人在各种论坛上讨论这件事情,但是确始终没有得到改善。毕竟Notion功能再强大,也不是图灵完全的。

不优雅的重复事件

于是我开始寻找折中。一种解决方式似乎是可以使用Notion提供的API来操作,具体的解决方案我还没有研究透,或许有时间回去研究吧?可是效率工具只是效率工具,而非效率本身。花很长时间研究如何完成这个功能似乎不很值得,且不说外接服务器很不优雅。

我参考了论坛里各位的说法,设计了一种折中办法,不优雅,但是还能用。我的日程databaseTagDueNext Due三个属性。Tag我用于标记这个事件的类别。当然,我定义了四个特别的标记,分别是"Daily", “Weekly”, “Monthly” 以及 “Yearly”。如果事件中具有上述四个标记之一,那么是循环标记。Due是首次发生该事件这个日期,对于一次性事件来说,就是时间的日期。最关键的是,我设计了一个Next Due属性,这是一个Formula属性。我设计为计算出循环日期的下一个截止日期;如果是一次性时间,那么它等于Due

具体的Next Due计算代码放在下面,可以参考:

if(
    contains(prop("Tags"),"Weekly"),
    dateAdd(
        prop("Due"),
        ceil(dateBetween( now(), prop("Due"), "weeks"))+1,
        "weeks"
    ),
    if(
        contains(prop("Tags"),"Monthly"),
        dateAdd(
            prop("Due"),
            ceil(dateBetween( now(), prop("Due"), "months"))+1,
            "months"
        ),
        if(
            contains(prop("Tags"),"Daily"),
            dateAdd(
                prop("Due"),
                ceil(dateBetween( now(), prop("Due"), "days"))+1,
                "days"
            ),
            if(
                contains(prop("Tags"),"Yearly"),
                dateAdd(
                    prop("Due"),
                    ceil(dateBetween( now(), prop("Due"), "years"))+1,
                    "years"
                ),
                prop("Due")
            )
        )
    )
)

Notion的Formula其实类似一个函数式程序,还是挺好用的。这样,我就实现了自动计算循环事件的下一个日程的时间。但是,这不够完善。最大的问题在于这样只能显示出下个时间,但是没有办法设置提醒!这就很拙劣了!

发现一个Bug,当日期包括时间的时候,似乎工作并不正常。有机会我要来处理一下。

本人保留对侵权者及其全家发动因果律武器的权利

版权提醒

如无特殊申明,本站所有文章均是本人原创。转载请务必附上原文链接:https://www.elliot98.top/post/tech/notion-calendar/

如有其它需要,请邮件联系!版权所有,违者必究!