在 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 减去数据库中每个人的年龄属性值的结果。

    1.gif

    公式菜单

    当你编辑一个公式属性时,公式窗口就会自动弹出。该窗口的左侧菜单包含以下部分:

    • Properties:列出数据库中用到的所有属性。点击即可用对应的格式插入到公式中。
    • Constants:常用的常量,比如圆周率(Pi)。点击即可添加到公式中。
    • Operators:可以运行的简单运算。左侧的图标显示了它支持的属性类型。例如,Subtraction(减法)和 Addition(加法)只支持数字类型。
    • Functions:可以在 Notion 中运行的更复杂的、预先定义的公式。同样,左侧的图标显示了它支持的属性类型。
    • 在窗口顶部的文本框输入文字,即可搜索到你需要的以上内容。
    • 你还可以用方向键上下滚动来查看列表。

    小技巧:将鼠标悬浮在侧边栏中的列表项上,即可看到完整的释义,详细说明了使用方法和示例。

    2.gif

    • 例子:

    距离期限的天数

    • 有一个任务数据库,列出了对应的期限。我们的目标是计算出当前日期距离期限还剩多少天。
    • 对于数据库中的每个任务,用日期属性设置一个期限。
    • 然后,添加一个新属性,并从 Property Type(属性类型) 菜单中选择 Formula。将它命名为“剩余天数”。
    • 在表格中,点击公式列中的任意单元格,打开编辑公式窗口。
    • 在文本框中,输入 date 检索出与日期相关的命令。dateBetween() 看起来有用 —— 它会以我们需要的时间单位返回两个日期之间的时间。

    4.gif

    • 根据此函数的介绍,你需要给定两个日期以及一些文本:截止日期、当前日期、需要的日期单位(years、months、days,等等)。

    5.png

    • 在公式侧边栏顶部的 Properties 类目下点击截止日期的属性名,或者直接输入 prop("Deadline") 将截止日期插入到 dateBetween() 函数中。

    6.gif

    • 现在,我们的公式长这样:dateBetween(prop("Deadline"))。让我们来找找如何获取当前日期。now() 看起来有用,因为它会返回当前日期。
    • 按如下步骤完成函数:

      • 首先,添加一个逗号,表示我们想要得出截止日期和当前日期的时间差:dateBetween(prop("Deadline"), now())
      • 然后,根据函数的说明,定义我们想要的时间单位:dateBetween(prop("Deadline"), now(), "days")
      • 最后,点击 Done,对数据库应用此函数。
      • 大功告成!现在你就能知道距离截止日期还剩多少天了

    7.gif

    常用例子

    我们汇集了一些常用的公式例子,并附上书写方法

    自动勾选复选框

    你可以写一个公式,让数据库中的复选框根据其他属性值自动判断勾选状态。

    • 目标:如果 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", "")

    标签: Notion, Notion教程, Notion使用教程, Notion入门教程, Notion高级教程, Notion核心教程, Notion怎么用, Notion使用, Notion配置, Notion技巧, Notion下载, Notion数据库, Notion页面, Notion工作空间, Notion权限, Notion共享, Notion安全