【Notion教程】在 Notion 中使用公式

在 Notion 的 Database(数据库)中,你可以添加 formula(公式)property(属性),该 properties (属性)可以使你基于其他 properties (属性)进行各种运算和函数。正如在 Excel 或者 Google Sheet 中那样,你可以在 Notion 中使用公式求和以及获取其他许多有用的值。
公式术语
书写公式时最最艰难的就是理解所有的术语了!以下是你在 Notion 中使用公式时最常见的词语以及它们的含义:
- Function(函数):一组输入值与一组可能的输出值之间的关系,每个输入仅与唯一的输出相关联。
- Syntax(语法):指的是公式中能够返回正确值的字母和术语的顺序。
- Argument(自变量):指的是函数中的任意输入值,如一个属性。
- String(字符串)
:通常指的是文本(即一串相连的文字)。公式中,字符串往往被包裹在引号中。
- Substring(子字符串)指的是一个长字符串中的一段。“No”就是“Notion”的子字符串。
- Boolean(布尔型):布尔值非 true(真)即false(假)。
- Concatenate(连接)
:连接两个字符串。
- 例:
concat("add", "text")
会生成"addtext"
。
操作中的术语
一个可以把上述术语串在一起的例子:concat("add", "text")
concat
就是函数。它对其圆括号中的输入值应用特定的计算或者操作。"add"
和"text"
就是函数的自变量。- 每个自变量都是文本类型(或者是字符串)。
- 函数可以使用各种类型不同的自变量,例如 checkbox(复选框)(也就是布尔型)、数字或者 日期。
- 函数的语法要求用引号包围字符串,而其自变量则需要用圆括号包围。
写一个公式
- 首先,在 Database(数据库)中添加一个新属性并命名,从
Property Type(属性类型)
菜单中选择Formula(公式)
。 - 为了让公式对属性进行操作,你需要输入一个函数,这个函数会用到该属性。
- 属性的操作很像公式中的变量。使用你给它起的名字就可以操作它。
- 你可以像输入数字计算器一样输入函数(还记得吗?)。记得用圆括号和引号包围属性!
例子:与 21 岁差多少年?
- 假设 Database(数据库)中有一个数字类型的属性,名为
Age
,而你想要用公式属性显示人的年龄与 21 岁的差距。 - 输入
21 - prop("Age")
即可返回 21 减去数据库中每个人的年龄属性值的结果。
- 假设 Database(数据库)中有一个数字类型的属性,名为
公式菜单
当你编辑一个公式属性时,公式窗口就会自动弹出。该窗口的左侧菜单包含以下部分:
Properties
:列出数据库中用到的所有属性。点击即可用对应的格式插入到公式中。Constants
:常用的常量,比如圆周率(Pi)。点击即可添加到公式中。Operators
:可以运行的简单运算。左侧的图标显示了它支持的属性类型。例如,Subtraction(减法)和 Addition(加法)只支持数字类型。Functions
:可以在 Notion 中运行的更复杂的、预先定义的公式。同样,左侧的图标显示了它支持的属性类型。- 在窗口顶部的文本框输入文字,即可搜索到你需要的以上内容。
- 你还可以用方向键上下滚动来查看列表。
小技巧:将鼠标悬浮在侧边栏中的列表项上,即可看到完整的释义,详细说明了使用方法和示例。
- 例子:
距离期限的天数
- 有一个任务数据库,列出了对应的期限。我们的目标是计算出当前日期距离期限还剩多少天。
- 对于数据库中的每个任务,用日期属性设置一个期限。
- 然后,添加一个新属性,并从
Property Type(属性类型)
菜单中选择Formula
。将它命名为“剩余天数”。 - 在表格中,点击公式列中的任意单元格,打开编辑公式窗口。
- 在文本框中,输入
date
检索出与日期相关的命令。dateBetween()
看起来有用 —— 它会以我们需要的时间单位返回两个日期之间的时间。
- 根据此函数的介绍,你需要给定两个日期以及一些文本:截止日期、当前日期、需要的日期单位(years、months、days,等等)。
- 在公式侧边栏顶部的
Properties
类目下点击截止日期的属性名,或者直接输入prop("Deadline")
将截止日期插入到dateBetween()
函数中。
- 现在,我们的公式长这样:
dateBetween(prop("Deadline"))
。让我们来找找如何获取当前日期。now()
看起来有用,因为它会返回当前日期。 按如下步骤完成函数:
- 首先,添加一个逗号,表示我们想要得出截止日期和当前日期的时间差:
dateBetween(prop("Deadline"), now())
- 然后,根据函数的说明,定义我们想要的时间单位:
dateBetween(prop("Deadline"), now(), "days")
- 最后,点击
Done
,对数据库应用此函数。 - 大功告成!现在你就能知道距离截止日期还剩多少天了
- 首先,添加一个逗号,表示我们想要得出截止日期和当前日期的时间差:
常用例子
我们汇集了一些常用的公式例子,并附上书写方法
自动勾选复选框
你可以写一个公式,让数据库中的复选框根据其他属性值自动判断勾选状态。
目标:如果
Priority
为空或者包含“Important”,则勾选复选框。- 公式:
or(empty(prop("Priority")), prop("Priority") == "Important")
- 公式:
此公式对数据库中的 Select
属性同样适用。在本例中,如果 Select 属性的值为“Option 1”,则选择框为选中状态。
equal(prop("Select"), "Option 1")
日期计算
使用数据库中的日期属性,你可以计算各种时间范围。
目标:在“Years Employed”下面显示 Doug 到目前为止被雇用的年数。
- 公式: **
dateBetween(now(), prop("Start Date"), "years")
- 公式: **
目标:在“Years Remaining”下面显示 Doug 的剩余工作年限。
- 公式:
dateBetween(prop("End Date"), now(), "years")
- 公式:
目标:在“Formatted Text”下面,用年和月显示 Doug 的剩余工作时间。
- 公式:
concat(format(prop("Years Employed")), " years, ", format(dateBetween(prop("End Date"), now(), "months")), " months")
- 公式:
舍入公式
这些公式可以用不同的方法来四舍五入。
- 舍入为整数
:用 round()
包围你的公式
- 例子:
round(prop("One)" / prop("Two"))
- 保留一位小数
:用 round(*10)/10
包围你的公式
- 例子:
round(prop("One") / prop("Two") * 10) / 10
- 保留两位小数
:用 round(*100)/100
包围你的公式
- 例子:
round(prop("One") / prop("Two") * 100) / 100
在日期中添加星期几
获取日期并在公式属性中自动识别星期几。
formatDate(prop("Date"), "dddd, MMMM D, YYYY")
过期提醒
如果已经超过期限,则自动勾选。对个人 CRM 很有帮助,你可以设置一个你想要联系某人的日期,然后反复执行。
prop("Due Date") < now()
报错排查
在使用公式时,你可能会遇到一些报错信息:
Type mismatch: prop("Number") is not a Text
- 这意味着你在使用的公式只支持文本属性。
- 应对办法是,尝试用
format()
包围数字属性。 - 例如:
prop("Number") + prop("Text")
会报错。 可以改为:format(prop("Number")) + prop("Text")
Too few arguments in function if
- 这意味着你可能漏写了“else”语句。
- 尝试在公式末尾用
, "")
的方式添加 “else empty” 语句。 - 例子:
if(prop("1") == "this", "that")
会报错。
可以改为:
if(prop("1") == "this", "that", "")