Notion是什么
Notion是一款全能型笔记应用,你可以用它排版、管理笔记、管理工作项目、建立数据库、建立Wiki档案库,甚至免费构建出一个网站来。不太夸张的说,只有你想不到,没有它做不到的。如果会一点点编程(当然这个要求也相当低),那么你绝对可以把Notion使用出意想不到的效果。用一句简单的话来概括Notion的核心功能,就是Page + Block(Database) + Markdown
,此外还有导入与导出、内嵌网页、多人协作等特色。
为什么要管理读书
书读多了之后,我渐渐陷入了迷茫、混乱的状态,比如不知道一本书读了多久,为什么会读,收获了什么,有多少书在读?有多少书想读?它和之前读的书联系在哪里?鉴于以上,管理自己的读书就变得有必要了,因此我详细思考了自己的需求。
需要实现的需求:
- 管理读书进度(心愿单、未读、在读、已读)
- 对图书进行分类(论述作品、文学作品、记叙作品)
- 是否有电子书
- 记录一本书的阅读时间跨度
- 记录为什么会读、读书的来源在哪里
- 记录与其他书的联系
- 记录读书笔记
基于以上需求,最终用Notion实现的效果还不赖。
那么如何实现呢?本文正是向大家介绍实现过程的,虽然还带着一点安利Notion的心态,嘿嘿,请各位和我一起继续往下看吧!噢对了,由于Notion功能强大,这也导致上手起来没那么容易,如再慢慢介绍Notion的基础功能,篇幅可能就不够了,而介绍Notion的文章也已经很多,这里还推荐各位在少数派里看看相关的文章。当然我自己也整理了一些,各位打开下列网址,就可以看到了:
大家准备好了,那我们开始吧!
🚨注意:本文的教程仅提供一个思路,在任何环节,各位都可以自由发挥,实现自己的需求。
步骤
1.建立数据库
Notion是基于page管理内容的,首先需要做的是新建一个Page,长相如下:
由于我们的读书项目是基于数据库的(database),那么我们选择database的内容Table或Board都可以,Table是表格的形式,Board是看板的形式,虽然形式不同,但具有同样的数据结构,是可以相互转换的。
以Table为例开始。
我们可以把整个数据库视为一个对象集——图书馆
,对象为图书
,每一个具体的图书视为具体的实例
,而每一个对象都有自己的属性,以人为例就有身高、体重、性别、姓名、爱好等等,那么图书
根据我们的需求就有类别、作者、进度、时间等等。
新建的数据库默认只有三个属性(Name、Tags、Files),就需要我们自行修改了。点击一栏,选择Open,界面如图。
删除Files和Tags两个属性,点击Add a Property
(添加属性)。
根据我们的需要添加基础属性有Date(用于记录时间)、Select(用于选择类别和作者和评分)、Multi-Select(用于设置标签)、Checkbox(用于判断类型,如是否有电子书)、以及Formula(用于计算阅读时间的间隔和判断是否显示在看板上)。下图是一本书需要的属性:
使用Select基础属性设置一个具体的Status
属性(即状态),选项包括Not Started(要读但未读的书),In Progress(在读)、Finished(已读)、Suspended(因为某种原因而暂停读的书)、Wishlist(想读但还没有条件获得图书的书),特别注意的是,Status将作为我们之后建立看板
的依据。
属性的建立过程中,我需要向各位特别讲解两个属性,即Days
(读书时间长度)和OnBoard
(是否显示在看板上),为什么需要特别讲解呢?因为这里用到了编程的思想。两者都是使用Formula作为基础的。
选择Days
,点击Edit Formula,填写代码:
if(if(prop("Status") == "Finished", dateBetween(end(prop("Date")), prop("Date"), "days"), dateBetween(now(), prop("Date"), "days")) == 0 or prop("Status") == "Not Started" or prop("Status") == "Wishlist", "0", format(if(prop("Status") == "Finished", dateBetween(end(prop("Date")), prop("Date"), "days"), dateBetween(now(), prop("Date"), "days")))) + if(if(prop("Status") == "Finished", dateBetween(end(prop("Date")), prop("Date"), "days"), dateBetween(now(), prop("Date"), "days")) <= 1 or prop("Status") == "Not Started" or prop("Status") == "Wishlist", " day", " days")
注意这里使用的编程语言不是常见的语言,是notion基于JavaScript
所简化的,相关的语法规则需要特别学习一番,想了解更多的各位可打开这个网址:https://www.notion.so/Notion-Formulas-30d8d88656534222949d7210eccfa608。
想必大家看到这里一定晕头转向了,虽然这是我自己写的,看起来也晕晕的,但其实这是非常简单的一段代码,说白了就是利用Date属性计算阅读开始和结束时间的时间差,即读完一本书所需的时间。对于未读完的书,则可以计算现在距离开始时的时间差。
而OnBoard
属性是用于判断一本书是否显示在看板上。
为什么要特地设置一个OnBoard
属性呢?
假如读书积累到了一定程度,Finished属性的图书将变得非常多,这会导致在Finished栏目下的图书显示很长一串,显然这是非常不必要且不雅观的。OnBoard结合Filter(筛选)将解决这个问题。
OnBoard
代码如下:
if(prop("Status") == "Finished" and (dateBetween(now(), end(prop("Date")), "days") <= 21 or dateBetween(now(), prop("Date"), "days") <= 30) or prop("Status") == "In Progress" or prop("Status") == "Suspended" or prop("Status") == "Not Started" or prop("Status") == "Wishlist", true, false)
代码解释是,如果为在读、暂停、未读和心愿单将选择为Onboard
,如果是已读则将判断是否为最近一个月读的书,大于一个月前读的书或二十一天前读的书将不选择为Onboard
。
以下为建立数据库后表格显示的内容,以后每添加一本书(实例),将会自动带上属性供选择。
2.制作看板
- 在左上角Table View下,点击Add a View,选择Board,之后在右上角Group by选择Status(即之前设置的属性)。
- 设置Filter(筛选),选择Onboard属性,如下图:
- Properties内容选择为:
- Sort(排序)设置为:
Date -> Descending
。
最终,看板效果如下:
3.添加新建图书模板
在右上角可以看到一个New按钮,下拉选项中有一个新建模板的选项,点击New Template。
命名为New Book,并编辑内容大概如下,也可以根据自己的需要作修改。
编辑完成后新建一本书时就可以直接套用模板了。
好啦,以上就是全部过程了。我的读书页面已经分享出来,点击这里即可查看。