少数派栏目试读
本期试读选自《Notion All in One:搭建高能效率系统》。本栏目是一份给知识工作者的 Notion 终极指南,包含三重干货,从入门到进阶,把 Notion 一次性讲清楚。
2023 年 2 月,Notion 将过去的 /Template
功能升级为 /Button
,这一功能的装载宣告着 Notion 的「应用搭建能力」又上了一个崭新的台阶。
过去 Notion 的模板,或者说所有笔记软件的模板功能,纯粹只是对已有文档的简单复制,省去的大概只有 Ctrl C
+ Crtl V
的功夫,但 Button 这一功能从名字上就能看出,它所能执行的动作远不止「复制模板」这么简单。
你只需要使用命令 /button
就能够在所有能够插入功能区块的地方使用 Button。如下图所示,创建 Button 之后弹出了 5 个可选的功能组件:
点击之后就可以将这些组件嵌入到 Button 的执行列表中,每个组件都有各自的功能和用法,并且 Button 将会按照从上到下的顺序依次执行这些组件:
所谓 Button 顾名思义就是一个可以点击的按钮,那么既然是按钮,点击之后就必然会触发某种动作,就像灯的开关、门的把手、电脑的启动按键。
例如下图,点击 Button 按钮就触发了「打开资源库」的动作,可以说这就是 Button 最简单、最基础的应用方式:
但 Notion 的 Button 显然不止「打开页面」这一项功能,你可以类比苹果的快捷指令(Shortcut)、魔兽世界的宏命令、Windows 的批处理脚本,它们都能够将多个命令、多个动作或者多个流程封装在一个广义上的「按钮」之中,如此就能为我们节省大量的重复操作时间。
Insert blocks:快捷插入模板
基础用法
使用命令 /button
即可创建按钮,然后点击 Insert blocks
,Notion 就会创建一个用于插入区块的「输入框」:
你可以在这个「输入框」内创建任意功能,添加任何内容,它可以是一张图片、一篇文章,也可以是另一个 Button 或另一个数据库,你平时怎么使用页面,你就可以怎么使用这个输入框。
我们可以在这个输入框内使用 @
这个符号来插入两种时间变量:
- Now - Time when duplicated (包含当天的日期和时间点)
- Today - Date when duplicated (仅包含当天日期)
以第一个变量 @Now
为例,当我们将鼠标悬停在上面,它就会显示 Time when duplicated
的提示。也就是说,每一次你点击 Button,这个时间变量都会先读取点击 Button 那一刻的日期和时间,然后再显示出来:
时间变量这个用法,同样可以用于「insert block」里的页面的标题上,如下图所示:
如此一来,我们就可以使用 Button 来插入一个「以当天日期作为标题」的页面模板了:
在最近的一次更新中,我们还可以用 @ 符号来选择「Me - User when duplicated」
这个命令的含义是,「谁」点了这个按钮,这个按钮就会生成点击人的 ID。
例如我点击了这按钮,那么这个按钮就会生成我的 ID 。而在协作编辑场景中,如果是你的同事点击了这个按钮,那么按钮就会生成他的 ID。
在 Inser block 中,我们还可以手动选择要将生成的模板插入到 Button 的上方还是下方:
Button 也能够保留页面的分栏排版结构。
案例参考
场景一、在一般页面中创建重复内容
例如例行的检查清单,或者是固定的每日任务模板:
如果再加上时间变量的话,就可以在生成日记、更新说明等内容的时候,快速插入当前的日期:
场景二、将复杂模块拆分到 Button 中
我为我的「项目管理数据库」创建了一个模板,在这个模板中包含了一个 Button。
如果这个项目比较复杂,那么在执行前,我就会点击这个 Button,让 Button 为这个项目补充更详尽的启动检查事项:
再举一个例子,我们可以创建一个内容管理数据库,然后把「选题分析」、「脚本大纲」、「脚本模板」,以及「数据复盘」等内容模块封装进不同的 Button 中,然后再将这些 Button 放进数据库的模板页里。
如此一来只要激活这个数据库模板,就能在新建的页面中带上这几个按钮:
这样就不至于在激活数据库模板时,一下子生成大量的页面内容,有可能会干扰你的注意力,更大概率是会让我们产生畏难的情绪。
Add page to:添加页面到数据库
Add page to
这个组件能够允许我们通过 Button 将页面创建在指定的数据库中,如此一来 Button 的应用场景就得到了进一步扩展,例如:
- 将灵感、想法等碎片信息快速记录到「灵感数据库」中
- 快速反馈一个 Bug 到「Bug 排查数据库」中
- 快速新增一条观影记录到「观影数据库」中
通过以上三个简单的参考案例,我们可以先得出一个简单的结论,Add page to
这个功能组件主打的就是一个快速记录。当你的数据库存放的页面层级比较深,或者你在某段时间内需要频繁记录某个数据库的时候,这个功能就会非常实用。
基础用法
用法 1、使用 Button 创建一般页面
- 使用
/button
命令创建按钮,然后选择Add page to
组件 - 在
Add page to
位置选择需要记录的数据库坐标(Select database)
- 在创建(新增)页面的同时,我们还可以为这个页面添加标题、并设置它的数据库字段:
用法 2、用 Button 创建页面和子页面
在《表格视图解析》这篇文章中,我们介绍了 Sub-items 这个功能,它可以让我们为某个页面添加最多 10 个层级的子页面:
Sub-items 本质上是在同一个数据库中构建页面和页面之间的关联,主页面是子页面的 Parent item,而子页面则是主页面的 Sub-item:
所以如果我们要想用 Button 来为数据库中的页面添加子页面,就需要为这个子页面设置好它的上级页面,即它的 Parent item ,具体流程如下:
- 使用
Add page to
创建一个页面 - 点击
Edit another property
- 然后编辑
Parent item
这个字段 - 为这个新增的页面指定它的 Parent item:
在这个用法的基础上,我们还可以用 Button 同时创建主页面和子页面关系:
具体操作步骤如下:
- 使用
Add page to
先添加一个主页面; - 使用
Add page to
添加一个子页面 1; - 将子页面 1 的 Parent item 字段值设置为「步骤 1 创建的页面」。
将上图红框中的内容放大,我们可以看到步骤 1 创建的主页面变成了蓝色的文字提示: New page added in XXX from step 1
,意思是「通过 Add page to 所创建的第一个页面」
如果我们再创建一个子页面 2,就会发现子页面 1 同样变成了蓝色文字提示:New page added in XXX from step 2
,意思是「通过 Add page to 所创建的第二个页面」
也就是说,如果我们想让 B 成为 A 的子页面,只需要将 B 的 Parent item 的字段值设置为 A 即可,你只需要分辨清楚页面 A 是 Button 所创建的第几个页面即可。
案例参考
用法 1、为记账表创建常用消费条目
当我们用 Button 在数据库中快速创建页面的时候,可以同时设定这个新建页面的数据库字段值,这是一个非常重要的特性。
例如下图我创建了一个简易的记账表,在 Button 这个功能上线之前,如果我们想快速添加一笔常用消费的话,大概只能通过数据库右上角的模板进行添加,但是这样就多了「唤出模板菜单」和「找到模板」的两步动作:
但是现在我们就可以用 Button 将特定的消费内容、消费方式、消费金额、以及消费时间这四项封装在一个按钮之中:
今后只需要点击对应的 Button,就可以在关联的数据库中快速添加你所需要记录的内容了:
参考模板:点我
用法 2、快速创建包含子任务的项目模板
假设我们在 Notion 中创建了一个项目管理表,每个项目都遵循一定的固定流程来执行,在项目主体下我们会创建诸如「策划」、「评估」、「执行」、「复盘结案」等常用文档来作为项目执行的一部分:
现在如果我们又有一个新的项目准备加入排期,就可以使用 Button 一键创建多层级的文档:
参考模板:点我
用法 3、调用数据库模板
使用 Add page to 这个命令时,我们可以调用目标数据库的特定模板来创建页面:
例如,数据库中存在这样的一个模板:
那么我就可以用 Button 来调用这个模板,你只需要点击下图所示位置即可
功能缺憾
我们无法将 Insert blocks
模块中的内容添加进 Add page to
所创建的页面里,这点是我希望 Notion 能够尽快优化或者迭代的地方:
Edit pages in:编辑数据库内的特定页面
基础用法
Add page to
让你能一键在特定的数据库内添加页面,而 Edit pages in
则是让你能编辑数据库中的某个特定页面。
例如在下图案例中,我用 Checkbox 字段创建了一个简易的打卡数据库,在 Button 出现之前,我需要先找到这个数据库,然后再手动在数据库中逐个点击勾选框:
而现在,我可以用 Button 将所有的打卡任务一键勾选:
在这个打卡案例中,我所创建的数据库使用了 Template + Repeat 的模板自动重复功能,让这个数据库每天自动生成一页需要打卡的页面:
所以这里就产生了一个问题,数据库自动生成的页面那么多,我怎么才能让 Button 知道我想编辑的页面是哪一个呢?
基本操作如下:
- 使用命令
/button
插入按钮模块后,选择Edit pages in
组件
- 为 Button 指定需要编辑的数据库:
- 为 Button 指定需要编辑的页面
在这一步中,我们就需要用到此前学过的数据库筛选功能,先用 Button 筛选出一个(或某几个)需要编辑的特定页面,例如:
- 今天创建的页面(筛选 Date 或者 Created time 字段)
- 任务状态是 To-do 的页面(筛选 Status 字段)
- 金额大于 30 的页面(筛选 Number 字段)
- 标题中包含 XX 关键词的页面(筛选 Title 字段)
- 任务已完成的页面(筛选 Checkbox 字段)
这样一来当你点击 Button 的时候,它才知道自己应该编辑哪一个页面。如果你对数据库的筛选过滤还不够了解的话,可以回顾第二章的《表格视图解析》。
所以在前文的每日打卡案例中,我对 Button 的分析如下
- 首先,数据库的自动模板每天都会产生一个新页面
- 因为,我只想让 Button 对今天生成的打卡页面进行操作
- 所以,我需要让 Button 先筛选出哪些 Page 是今天生成的
所以此处 Button 的第一步操作就是先设置过滤条件:
通过这一步我们就筛选出了今天创建的打卡页面,接下来就可以选择需要编辑的字段,然后设定编辑条件(即将所有 Checkbox 都打勾)。
设定完毕后,点击 Done
即可完成 Button 的编辑操作。
如此一来,当我们点击这个 Button 时,它就会执行以下操作
- 在关联的数据库内搜索今天创建的页面
- 在今天创建的页面内检索 Button 指定的字段
- 为这些字段输入我们提前设定好的编辑条件
模板参考:点我
补充
如果这个 Button 是创建在数据库的页面之中,那么我们无须设定复杂的筛选条件,而是可以直接指定 Button 所在的这个页面(this page
)来进行编辑:
基于这个特性,我们可以直接将 Button 放在数据库的模板页内,并将这个 Button 的 Edit pages in
的编辑对象直接指向模板所要创建的这个页面。
案例参考
Edit pages in
本身的操作方法其实并不存在什么困难,对一部分用户来说更困难的其实是以下几点:
- 不清楚它的编辑上限
- 不了解它有哪些适用场景
接下来我将提供几个应用案例供你参考。
案例 1、快速修改任务管理表的各种状态
假设我们现在有一个任务管理看板,它的结构如下:
现在我可以使用 Button 一键将所有的 In Progress 设置为 Done,然后再从 To-do 中,将那些优先级为「高」、并且执行人是「二一」的任务拉取到 In Progress 的看板中:
接下来我为这个数据库设置了一个「不显示已归档」的过滤条件(filter),就可以用 Button 将所有状态为「Done」的任务修改为「归档」,如此一来就可以快速地将 Complete 看板清空了:
在上述案例中,我们通过 Button 快速批量修改了任务的状态,并辅以数据库的视图过滤筛选功能,使用得当的话,的确能大幅提高数据库的组织和管理效率。
参考模板:点我
案例 2、记录打卡时间并计算打卡间隔时长
在下图中我创建了一个简易的读书打卡记录表,用于记录「开始读书」和「结束读书」的时间,然后用数据库公式计算出时间间隔:
为了提高效率,我创建了一个 Button,然后使用 Add page to
组件在这个打卡数据库中创建了一个新的页面,并对 开始时间
这个字段添加了 Now
的时间变量:
于是当我点击这个 Button 时,这个打卡数据库就能生成如下记录:
接下来再创建一个 Button,然后用 Edit pages in
组件让它先筛选出今日创建的读书任务,然后再为这个任务添加结束时间:
现在点击「结束读书」的 Button,就可以为今天的读书任务添加结束时间,同时因为预先设置好了函数公式,所以它也能够自动计算出开始时间和结束时间的差值:
模板参考:点我
其他补充
- Show confirmation:确认动作是否执行
有时候按钮放在页面中有可能会在无意中点到,导致数据库或者页面被污染,如果你担心这种情况发生的话,可以在执行动作之前添加一个「是否执行」的确认按钮:
- Button 中的组件可以通过拖拽的方式调整执行顺序:
- Button 中的组件可以通过复制的方式进行快速复用
数据库 Button
Notion 在 2024 年 2 月,为数据库新增了一个 Button 字段,你可以阅读这篇 功能追踪 来了解更详细的说明。
在本次 2024 年 7 月的课程修订中,我为这篇功能追踪制作了 2 个可供参考的模板:
在《Notion 10 年发展史》这篇文章中,我们提到了 Notion 的终极愿景是让所有人都能够以一种无代码的方式来构建属于自己的工具或者产品,我想 Button 正是在为更好地实现这个目标铺路。毕竟以 Notion 现在所能实现的功能而言,「搭建应用」已经不仅仅是一个梦想,而是一件当下就可以去去创造的事情。
- 删减了大量冗长的表达
- 新增了 2 个 Button 的新特性
- 新增了 1 个 Button 的基础用法
- 新增了 7 个可供参考的 Button 简易模板