2

Notion 的自动化改造之路:Notion x Zapier 初尝试

 1 year ago
source link: https://sspai.com/post/75842
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Matrix 首页推荐 

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。 
文章代表作者个人观点,少数派仅对标题和排版略作修改。


这篇文章将介绍,我为什么以及如何将自动化数据处理应用到 Notion 当中。并通过我实际的案例,介绍自动化工具 Zapier 的用法,分享我的使用体验。

数据更新和维护的不智能,让 Notion 的使用体验变得糟糕

随着 Notion 功能的不断完善,越来越多的人会选择使用 Notion 作为自己的第二大脑。无论是构建个人的知识网络、保存整理数据信息、还是展示自己的数字世界的成就,这些场景中,Notion 提供的功能都显得游刃有余。此外,得益于 Notion 可以高度个人定制化以及提供在线编辑的特性,用 Notion 管理待办事项,规划日程,同步团队信息,乃至于记账、写博客这种更进阶的用法,使用 Notion 都可以让数据为用户服务,一切变得井井有条。

操作的不便

但是,所谓凡事有一利就有一弊。在 Notion 当中构建的精巧且复杂的数据库,不仅意味着数据在展示层面上的美观和应用层面上的便利,同时也意味着需要在数据的更新维护上花更多的时间和精力。

按照我自己的使用习惯,我在 Notion 当中搭建了任务管理的数据库和财务管理的数据库。这其中有着大量的数字格式的数据存储在其中。但是因为 Notion 当中并不支持直接将数据进行运算得出结果

例如,数字一栏记录的值是 100,并不能通过直接填写 「+10」得到 110,数字数据的更新是需要删除原有的数据,并把计算好的新结果填入原来的位置。

4bd6ad0909f8a9569382f6f2f37f515e.gif

图 1 Notion 数据更改的痛点演示

在 PC 端或网页端,这样的操作还勉强可以接受,但是在手机的 App 上,这样的操作就显得过于麻烦。更不要提在记账这个应用情境中,为了追求及时、准确且无遗漏的余额显示,我通常会在付款之后就立刻更新数据。因此总是在这种时候,会在繁琐的操作当中,倍感抓狂。

臃肿的操作,带来使用方式的偏离

不仅是操作上的繁琐,更重要的在于,如果我们把使用 Notion 数据库记录、更新、回顾数据,进而改变自己行为模式的过程视作一个 PDCA 循环,那么无疑操作的复杂让 PDCA 循环失去了平衡。大部分的精力用于如何处理执行当中细碎的操作,而没有足够的时间回顾数据,反思自己的行为。这样在 Notion 当中建立数据库,也是去了最重要的作用和意义。

1

图 2 理想的 PDCA 循环,和执行中被操作拖累的 PDCA 循环

于是我想,是否能借助工具,自动化地处理更新数据库当中的数据。回到记账的场景当中,我作为账簿的使用者,只需要事前设计账簿信息的展示方式、规划自己的消费,定期查看账簿中留存的信息、改善自己的消费习惯。也就是将自己从繁复且无意义的数据库操作中解放出来,找回借助 Notion 记录数据,实现 PDCA 循环的意义。

寻找自动化工具

在找寻自动化工具的过程中,我想起很久之前读过的一篇少数派的文章:怎么管理自己的工作和生活?我尝试了 Notion+滴答清单

在这篇文章中,作者用 Automate.io 串联起 Notion 和滴答清单,构建他的工作生活流。其中 Automate.io 可以在后台自动填写 Notion 表格的功能,给我留下了印象。

我也本想以 Automate.io 为自动化工具,构建我的自动化记账流程。然而不巧的是,在我已经使用一段时间 Automate.io 之后,收到了这个平台将于今年 10 月 31 日停止运营的消息。为了让这篇文章提供的方法,更能有实操层面的意义,我选择重新在 Zapier 平台上重新搭建自动化的流程,并介绍我的经验。在功能上,两个平台并无明显区别,只是收费策略上有所不同,这一点我会放在使用建议中讨论。

Zapier 简介

Zapier 所提供的服务,简单地来讲,是通过接入各个 web 应用的 API 读写信息,并将这样的读写单元以模块化的方式提供给用户。这样用户就可以根据自己的需求,选择使用哪个应用的模块,给 Zapier 读写的权限,搭建属于自己的自动化任务流。根据 Zapier 官网的介绍,目前 Zapier 已经支持超过 5000 款应用。这基本上包括了市面上大部分主流的 web 引用。

Zapier 当中搭建一个自动化任务处理流的方式非常简单易懂,在开始之前需要厘清一下几个概念。

  • 触发器(Trigger) 触发器就是在什么样的条件下,开始执行这个自动化处理流程。可以是有新的日程信息被添加到日历类的应用当中,也可以是在即时通信应用中收到了新的消息。只要 Zapier 检测到和触发器设定相符的条件达成,就会自动开始接下来的处理。
  • 动作(Action) 动作就是 Zapier 将要执行的每一个步骤。比如根据前面得到的日程信息创建新的待办事项,或者将即时通讯软件收到的信息转发给其他人。
  • 自动化任务流(Zap) Zap 就是在 Zapier 中,对一个自动化任务流的称呼。用户使用网站提供的模板,快速开始自己的自动化之旅。同时也可以完全自定义,实现自己想要的功能。一个自动化任务流当中,需要一个触发器和至少一个动作。处理相对复杂的任务的时候,当然可以添加多个动作。
  • 输入输出(Input/Output)从触发器开始,每一个动作执行结束之后,都会留有数据输出的接口。后续的动作可以通过读取前面动作的输出作为自己的输入,让整个流程相互串联。

或许这样的解释,还不够明确和清晰,所以我会用我自己创建的,在 Notion 当中自动记账更新账簿,以及和 Notion 联动的番茄钟为案例,介绍 Zapier 是如何应用在我的 Notion 自动化改造当中。

案例 1 自动化记账工具

首先,在开始动手创建自动化任务流之前,先要理清我自己的需求和 Zapier 所能提供的功能。

目前我用两个数据库管理我自己的账户,分别是各个账户的真实余额和我每个月的剩余预算。我在每次消费之后,要更新账户中和预算余额。而我希望自动化任务流,在获取我消费的金额之后,自动计算两个数据库当中对应项目的余额,然后将新的数据更新进去。整个过程如图 3 所示。而且,最好能满足以下两个要求。

1

图 3 我的两个账目管理数据库

  1. 考虑到数据在不同应用之间流动会带来数据泄露的风险,整个过程应该只发生在 Notion 内部。
  2. 输入的操作越简化越好,具体而言就是:不需要的信息就不用输入,能选择的项目就不手动输入。

根据我的需求,在 Notion 当中应该有一个用于记录消费信息的数据库,而当这个数据库有新的信息被添加的时候,Zapier 的自动化流程就会被触发,开始一系列的处理。

c70c5bb760829935c92166acd09845a9.gif

图 4 因为繁琐的文字输入都是用选择代替,所以用手机录入信息也十分方便。

刚好 Zapier 提供了以 Notion 当中添加新数据为条件的触发器。而后 Zapier 需要读取目标数据库的当前信息,和输入的信息相加减得出结果,并将新的结果写入数据库当中。为此,在 Zapier 当中,被创建的自动化处理流程如图 5 所示,Zapier 当中的模块衔接如图 6 所示。

1

图 5 记账的流程示意图

1

图 6 在 Zapier 当中呈现的模块衔接,每一个模块都是可被编辑的

具体各个模块的编辑过程,由于并不是很复杂,就不在这里逐一展示了。相信即使是初次使用的朋友,根据模块中自带的说明演示文档,也是可以轻松上手的。这里想要分享一些比较值得注意的点,和我在实现基础功能之上的一点点设计。

  • Zapier 获取 Notion 访问权限的范围,是可以由用户指定的,但是可以指定的范围仅限于一级页面。Zapier 获取 Notion 权限的页面如图 7 所示。对于注重页面内内容隐私的用户来说,尽量把要交给 Zapier 操作的页面单独放在一级页面,开放权限。
1

图 7 Zapier 中获取 Notion 权限的操作。这里所有的页面都是一级页面,在这之下子页面的权限不能单独获取

  • 在一个动作内,通常只能完成一个操作。也就是说,一个动作内不能同时读取两个不同数据库当中的信息;同时一个动作内也不能既读取信息又写入新的信息。所以我这里必须用两个动作,分别读取两个数据库的信息,再用两个动作更新两个数据库的信息。这一点还是有所不便的。
  • 不仅仅是和应用的联动,Zapier 也提供了一些简单的内建的工具,用于自动化任务流的搭建。比如,这其中用到的,延迟和 Python 代码块。此外还有给数据规整格式、分叉路径(根据条件是否达成,选择不同路径)等等。基本上提供了轻量级编程可能用到的模块。
  • 在我的这个流程当中,延迟的操作是不可缺少的。由于 Zapier 的特性是每隔一段时间,检查一下触发器的触发条件是否达成,然后以触发器为开头开始一个处理流。如果在这个周期当中,有多个消费记录被添加进来,就会同时开启多个任务流。而如果当多个任务流参考并修改同一条数据的时候,后面的数据会修改会覆盖前一次数据修改,这是我不想要的局面。所以,需要设定一个延迟来确保数据的修改和读取是依次进行的。两种情况如图 8 所示。
1

图 8 有无延时操作的区别。影响最终的数据更新结果是否正确

  • 根据最少操作的原则,本来我希望能够有一个自动递增的序号,用于延时的计算与操作。(尚未实现)然而,在 Notion 当中建立自增序号,需要有一个专门管理序号数据库,对具体做法感兴趣的朋友可以阅读博客:Auto-Increment Table Row IDs。这样依靠外链的方式构建的自增序号,会使得 Zapier 无法正确读取,所以目前还是需要我手动输入一个延时顺序。

以上这些点,基本上我构建自动化记账的过程中着重注意解决的问题。这其中很多是基于 Zapier 和 Notion 的特性,不得不设计稍微复杂的流程来避免自动化的出错。要知道,很多时候,自动化工具启动以后,我只希望它能够正确的运转,给到我正确的结果。而不是,我从维护 Notion,变成维护自动化工具。

案例 2 Notion 的待办事项和番茄钟

在一开始,依然需要分析我的需求和 Zapier 提供的功能。

我有在 Notion 当中建立数据库,用于管理我的待办事项。每一个代办事项,我都会以半小时的番茄钟为单位,预估需要花费的番茄钟个数。也会在开始处理任务后,开始番茄钟计时,番茄钟结束后将最新的任务完成状态更新到数据库当中。具体的数据库构成如图 9 所示。

1

图 9 任务管理的数据库结构

如果应用市场中,有能直接读写 Notion 数据的番茄钟,就可以让我节省很多操作上的麻烦。遗憾的是,目前还没有。所以我要在 Zapier 中创建一个自动化任务流,来完成我手动的操作。在我开始一个任务以后,自动帮我开启一个番茄钟的计时,并在结束之后,将完成的状态更新到 Notion 的数据库当中。最好还能通过 Apple Watch 将番茄钟结束的信息提示给我。

前半部分数据库的操作,在上一个案例中都有所展示,基本的框架可以直接挪用。至于消息提醒的方式,我发现 Zapier 支持在 Discord 的频道中发送消息,而消息提醒也刚好可以在 Apple Watch 上显示。

1

图 10 Discord 频道内的消息

因此我在 Discord 当中建立了一个专属于番茄钟的频道,并将 Zapier 的机器人拉入其中。整个自动化的流程如图 11 所示。

1

图 11 任务的流程示意图

在创建前一个案例的基础之上,创建这一个自动化任务流就会轻车熟路。但依然有一个点需要被考虑。

  • Zapier 的文档中提到,判断触发条件的方式,是每隔一段时间检查一下条件是否被达成。在 Zapier 当中,根据订阅服务等级的不同,这个间隔会有所不同,对于个人用户来说,通常是 15 分钟。一开始我猜测这个时间间隔是指每过 15 分钟,Zapier 会检查一下当前的触发器状态。但经过我的测试,这个时间间隔更像是游戏中的 CD,两次检查之间的间隔至少是 15 分钟,在 15 分钟过后,触发器就是随时可以被触发的状态。更直观的说明请参考图 11。为此,我们不需要过分担心触发时间的间隔是否会影响番茄钟计时的准确,只要不是在刚刚执行上一个任务之后立刻开启一个待办事项。
1

图 12 两种不同的检测方式,Zapier 实际上采用的是第二种检测方式。

自动化带来的改变

经过一段时间的使用,我确信自动化工具让我使用 Notion 的习惯有所改变。毫无疑问,我从繁复的数据维护当中解放了出来。更少的数据维护,更多的思考,如何用数据记录如何改变我的行为。

在财务管理方面,我更加理解金钱为什么是一个可以支配的资源。当我不再需要计算具体的数字时,我打开余额展示页面的次数也就更少,数字增减不再会给我带来一种说不清楚的匮乏感。我更加关注如何支配有限的预算,更好地用于改善生活的状态。消费的心态,从考虑花多少,变成了为什么而花钱。必要的支出不再过分节俭,不必要的支出也不会心心念念。我想我这里有小小的成长。

任务管理和番茄钟的应用,可以让我对完成一个大一点的任务需要花多长时间有所概念,并管理好自己的时间、精力和进度。比如这一次我对 Notion 的自动化改造,包括这篇文章的写作,就是我用这个番茄钟的系统所管理的。整个计划被拆解成 4 个子任务,平均每个子任务要花费 5 个小时左右,一共在其中用了 23 个小时。有了这样的数据,我就能思考我如何更高效的分配自己的时间和精力,以及这样使用时间的方式是否让我感到值得和满意。在过去,我虽然也想考虑这样的问题,但是既没有抓手,也没有时间和精力。

也许,我实现了我最初的目标:让 PDCA 的循环,回到正确的轨道上。

使用建议和未来计划

Zapier 虽然满足了我目前的需求,但是我依然觉得相较于 Automate.io ,Zapier 的收费会有些过高。在这两个平台,如果创建的自动化任务流当中,要包含多个动作,那么就一定需要成为付费用户。在 Zapier 最低一档的付费,是 19.9 美元每月,甚至是一次性付清一年的份额,才能得到这个价格。而相对的 Automate.io 则只需要 9.9 美元每月。

如果是个人用户,从价格上来讲,我并不十分推荐成为 Zapier 的付费用户。当然,如果自动化能帮你节省的时间和精力远超过订阅的费用,那么当然可以尝试使用。如果你需要自动化帮你做的任务非常简单,只需要一个动作就可以完成的话,那么免费的账户就完全足够你使用。另外,如果你知道有其他的功能相似平台,收费更合理的平台,也希望能在评论区推荐分享给各位。

目前我还是每月付费的形式使用 Zapier。我不知道我是否还能在 Zapier 当中找到更价值、更有趣的使用方式。也许,在不久的将来,我可能会选择用写代码的方式,搭建一个更属于我自己的自动化任务流。希望那个时候,还能把我的经验与体会,分享在少数派这个社区。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK