Notion 函数基础入门 ③:高级模板必修课,掌握复杂逻辑判断与自定义进度条
在上一篇文章中,我们简单介绍了使用 dateBetween() 函数来制作倒数日的用法
在上一篇文章中,我们简单介绍了使用 dateBetween() 函数来制作倒数日的用法:
但有些时候我们可能会想,如果距离截止日期只剩最后一天,那么用「还有」这种说法,是否就显得不那么紧急和严肃了?
或者还有一种可能,随着时间的推进,dateBetween 计算得出的结果有可能变为负数,这样一来再用「还有 XXX 天」这种表述就变得不够正确了
理想的情况是,我们会希望 Formula 能够根据时间长短的不同,自动变换关于时间的形容词,如果能再加个表示状态的 Emoji 就更好了,就像下图这样:
要想实现这种效果,我们就需要用到 Formula 的 if() 函数,它的基础写法是 if(A,B,C),即如果满足 A 的条件就执行 B,否则执行 C。
if 函数的基础用法
基础写法
这个函数需要包含三项参数,每个参数之间用英文逗号隔开,其基本写法是 :if(条件判断,符合判断则执行1,不符合则执行 2)。
例如我们可以这么写 if(1<2,1,2),因为 1<2 的判断是正确的,所以返回了结果 1。
所以在上一篇文章的客户联络表案例中,我们就可以设置为:当时间间隔大于等于 90 天,则 if 函数返回文本需要联络,否则就返回文本 无需联络,具体写法如下:
请注意,上图中因为我们需要返回的结果是字符串,所以需要为这些文本加上英文引号。
再举一个例子,我们可以使用 if() 函数来判断截止日期是否过期,如果过期则用「已过 XX 天」表示,如果未过期则用「还有 XX 天」:
将这个函数拆开,便于大家观察它的结构和写法

多条件判断
案例一、计算绩效工资
前面我们讲到的 if 函数都只有一层的条件判断,然后根据判断的结果选择两个不同的值,但很多时候我们往往需要做出多层的判断,所以我们需要引入一个在 Formula 2.0 更新中新增的函数 ifs()。
在下面的例子中,如果使用一般的 if() 函数,则需要为每一种情况写一个 if,不仅繁琐还很容易遗漏最后的括号:
但在 ifs() 函数下,我们只需要写一个总的 ifs(),然后列出不同的条件和结果即可:
这样一来设置好「绩效工资」这个公式字段后,当我们更改每个人的「年终评级」这个字段,最终的绩效工资就会相应地有所变化:
参考模板:点我
if 的另一种写法
前面我们介绍了 if() 函数的基础写法是:if(condition, true_value, false_value),不过 Notion 还有另一种写法:condition?ture_value:false_value
在这种写法中,问号之前的是需要判断的条件,问号之后则是「当判断为真」时需要执行的动作,冒号之后的则是「当判断为假」时需要执行的动作。
这个用法也可以用于多条件判断的书写,例如(1 > 2) ? 1 : ((2 > 3) ? 1 : 3) ,最终输出结果 3。

复合逻辑判断
前面我们仅介绍了类似 1>2 或者 字段 1==字段 2 这类简单的判断,正确则为 true,错误则为 false
或者在 if()函数中介绍的也仅是单个条件的判断,例如(1 > 2) ? "正确" : "错误" :
但很多时候我们需要判断的情况是复杂的,所以接下来要介绍 and() 、or() 以及 not() 这三个逻辑运算符,它们将能更好地适配更多类型的条件判断场景。
基础用法
and( ) 函数
- 语法:and(A,B)
- 用法:只有当 A 和 B 都为 true 时,才返回 true,否则 false 例如在下图中,左边函数的两个判断都是正确,所以布尔值为 True;右边函数只有一个正确,所以布尔值为 False:
最后更新于