函数语法和功能

在此帮助文档中

Notion 公式可以对各种属性和函数进行运算。在此,你可以找到它们的列表 ➗


  • Looking for Notion formula basics? Check out this article →

  • If you have a formula that doesn't seem to work, learn about common formula errors and how to troubleshoot them in this article →

Know what you want your formula to do, but not sure how to build it? You can use Notion AI to create and edit formulas. Learn more here →

Notion 公式可以使用各种属性和函数进行运算。在此,你可以找到它们的列表!

公式支持几乎所有的属性类型。请注意,公式类型与属性类型不同。

属性类型

示例

公式类型

标题

prop("Title")prop("Title").length()

文本

文本

prop("Text")prop("Text").length()

文本

选择

prop("Priority") == "High"

文本

多选

prop("Tags").length()prop("Tags").includes("Finance")

文本(列表)

复选框

prop(\"Checkbox\")
not prop(\"Checkbox\")

布尔属性

电子邮件、URL、电话号码

!empty(prop("Phone"))
!empty(prop("Email"))
link("Call", "tel:" + prop("Phone"))

文本

唯一 ID

prop(\"Task ID\").split(\"-\").first() ← 前缀
prop(\"Task ID\").split(\"-\").last() ← ID

文本

创建者、
编辑者

prop(\"Created By\").name()
prop(\"Created By\").email()

人员

人员

prop("Person")
prop("Person").at(0).name()
prop("Person").map(current.email())

人员(列表)

日期、
创建时间、
上次编辑时间

prop(\"Due Date\") > now()
dateBetween(prop(\"Birthday\"), now(), \"days\")

日期

数字

prop("Number") / 2
pi() * prop("Radius") ^ 2

数字

关联关系

prop("Tasks").length()
prop("Tasks").filter(current.prop("Status") !== "Done")

页面(列表)

汇总

prop("Purchases").length()
prop("Average cost") * 12

数字、日期或任何类型的列表。取决于汇总配置。

内置函数是语言内置的特定符号和值,用于帮助指定计算。

内置函数

示例

数学运算符:+, -, *, %

2 * pi()"hello" + "world"

布尔值:
true, false

truefalse

比较运算符:
==, >, >=, <, <=

123 == 123 = true"Notion" == "Motion" = false

逻辑运算符:

and:true and false
true && false
and(true, false)
or:true or false
true || false
or(true, false)
not:not true
!true

三元运算符:
? :

X ? Y : Z 等同于 if(X, Y, Z)

Notion 公式支持以下函数。

名称

描述

示例

if

基于另一个值在两个选项之间切换。

if(true, 1, 2) = 1if(false, 1, 2) = 2prop(\"Checked\") == true ? \"Complete\" : \"Incomplete\"

ifs

检查是否满足一个或多个条件。返回与第一个 true 结果对应的值。可用于替换多个嵌套的 IF 语句。

ifs(true, 1, true, 2, 3) = 1ifs(false, 1, false, 2, 3) = 3

空白

如果值为空,则返回 true。0、“”和 [] 被视为空。

empty(0) = trueempty([]) = true

长度

返回字符串的长度。

length("hello") = 5length([1, 2, 3]) = 3

子字符串

从起始索引(包含)到结束索引(可选,不包含)处提取字符串中的子字符串。

substring("Notion", 0, 3) = "Not"substring("Notion", 3) = "ion"

包含

如果在第一个参数中找到第二个参数,则返回 true。

contains("Notion", "ot") = true

测试

测试字符串是否与正则表达式匹配。

test("Notion", "Not") = truetest("Notion", "\\d") = false

match

以列表的形式返回正则表达式的所有匹配项。

match(\"Notion Notion\", \"Not\") = [\"Not\", \"Not\"]match(\"Notion 123 Notion 456\", \"\\\\d+\") = [\"123\", \"456\"]

替换

用新值替换正则表达式的第一个匹配项。

替换(\"Notion Notion\", \"N\", \"M\") = \"Motion Notion\"

replaceAll

用新值替换正则表达式的所有匹配项。

全部替换(\"Notion Notion\", \"N\", \"M\") = \"Motion Motion\"全部替换(\"Notion 123\", \"\\\\d\", \"\") = \"Notion\"

lower

将文本转换为小写。

lower("NOTION") = "notion"

大写

将文本转换为大写。

upper("notion") = "NOTION"

重复

将文本重复给定次数。

repeat("0", 4) = "0000"repeat("~=", 10) = "~=~=~=~=~=~=~=~=~=~="

link

根据标签文本和 URL 创建超链接。

link("Notion", "https://notion.so") = "Notion"

style

为文本添加样式和颜色。有效的格式样式包括:\"b\"(粗体)、\"u\" (下划线)、\"i\"(斜体)、\"c\"(代码)或\"s\"(删除线)。有效颜色包括:\"gray\"\"brown\"\"orange\"\"yellow\"\"green\"\"blue\"\"purple\"\"pink\"\"red\"。在颜色中添加\"_background\"可设置背景颜色。

样式(\"Notion\", \"b\", \"u\") = \"Notion\" 样式(\"Notion\", \"blue\", \"gray_background\")

unstyle

删除给定输入内容的格式样式。如果未指定任何样式,则会删除所有样式。

unstyle("Text")unstyle("Text", "b")

format

将其参数设置格式为字符串。

format(1234) = "1234"format(now()) = "August 30, 2023 17:55"

添加

将两个数字相加并返回其总和,或者将两个字符串拼接起来。

add(5, 10) = 155 + 10 = 15

subtract

将两个数字相减并返回其差值。

subtract(5, 10) = -55 - 10 = -5

multiply

将两个数字相乘并返回其乘积。

multiply(5, 10) = 505 * 10 = 50

取模

将两个数字相除并返回其余数。

mod(5, 10) = 55 % 10 = 5

返回底数(base)的指数(exponent)次幂,即 baseexponent。

pow(5, 10) = 97656255 ^ 10 = 9765625

将两个数字相除并返回其商。

divide(5, 10) = 0.55 / 10 = 0.5

最小值

返回零个或多个数字中的最小值。

min(1, 2, 3) = 1min([1, 2, 3]) = 1

max

返回零个或多个数字中的最大值。

max(1, 2, 3) = 3max([1, 2, 3]) = 3

sum

对数字列表求和。

sum(1, 2, 3) = 6sum([1, 2, 3], 4, 5) = 15

中位数

返回其参数的中间值。

median(1, 2, 4) = 2
median([1, 2, 3], 4) = 2.5

平均值

返回其参数的算术平均值。

平均值(1, 2, 3) = 2
平均值([1, 2, 3], 4, 5) = 3

abs

返回数字的绝对值。

abs(10) = 10abs(-10) = 10

四舍五入

返回一个数字四舍五入到最接近整数的值。支持一个或两个参数。在双参数情况下,第一个参数表示数值,第二个参数表示要四舍五入的小数位数。

round(0.4) = 0round(-0.6) = -1
round(1.234, 0)
= 1round(1.234, 2) = 1.23round(1234, -2) = 1200

向上取整

返回大于或等于数字的最小整数。

ceil(0.4) = 1ceil(-0.6) = 0

向下取整

返回小于或等于数字的最大整数。

floor(0.4) = 0floor(-0.6) = -1

sqrt

返回数字的正平方根。

sqrt(4) = 2sqrt(7) = 2.6457513110645907

cbrt

返回数字的立方根。

cbrt(9) = 2.080083823051904cbrt(64) = 4

exp

返回 E^x,其中 x 是参数,E 是欧拉常数(2.718…),即自然对数的底数。

exp(1) = 2.718281828459045exp(-1) = 0.36787944117144233

ln

返回数字的自然对数。

ln(2.718281828459045) = 1ln(10) = 2.302585092994046

log10

返回数字的以 10 为底的对数。

log10(10) = 1log10(100000) = 5

log2

返回数字的以 2 为底的对数。

log2(4) = 2log2(1024) = 10

登录

返回 x 的符号,指示 x 是正数、负数还是零。

sign(-10) = -1sign(10) = 1

pi

圆周长与其直径之比。

pi() = 3.141592653589793

e

自然对数的底数。

e() = 2.718281828459045

toNumber

从文本中解析数字。

toNumber(\"2\") = 2toNumber(now()) = 1693443300000toNumber(true) = 1

现在

返回当前日期和时间。

now() = @2023年8月30日 下午5:55

今天

返回不含时间的当前日期。

today() = @2024年4月19日

分钟

返回日期中的分钟。

minute(parseDate("2023-07-10T17:35Z")) = 35

小时

返回日期中的小时。

hour(parseDate("2023-07-10T17:35Z")) = 17

返回日期中的日。

day(parseDate("2023-07-10T17:35Z")) = 1

日期

用年月日创建日期。

date(parseDate("2023-07-10T17:35Z")) = 10

返回日期所在年份的 ISO 周数 (1-53)。

week(parseDate("2023-01-02")) = 1

返回日期中的月份。

month(parseDate("2023-07-10T17:35Z")) = 7

返回日期中的年份。

year(now()) = 2023

dateAdd

将时间添加到日期。最后一个参数“单位”可以是以下选项:\"years\"(年)、\"quarters\"(季度)、\"months\"(月)、\"weeks\"(周)、\"days\"(天)、\"hours\"(小时)或\"minutes\"(分钟)。

dateAdd(now(), 1, "days") = @2023年8月31日 下午5:55dateAdd(now(), 2, "months") = @2023年10月30日 下午5:55
dateAdd(now(), 3, "years") = @2026年8月30日 下午5:55

dateSubtract

dateSubtract(now(), 1, "days") = @2023年8月29日 下午5:55dateSubtract(now(), 2, "months") = @2023年6月30日 下午5:55dateSubtract(now(), 3, "years") = @2020年8月30日 下午5:55

dateSubtract(now(), 1, "days") = @2023年8月29日 下午5:55dateSubtract(now(), 2, "months") = @2023年6月30日 下午5:55dateSubtract(now(), 3, "years") = @2020年8月30日 下午5:55

dateBetween

返回两个日期之间的差值。最后一个参数“单位”可以是以下选项:\"years\"(年)、\"quarters\"(季度)、\"months\"(月)、\"weeks\"(周)、\"days\"(天)、\"hours\"(小时)或\"minutes\"(分钟)。

dateBetween(now(), parseDate(\"2022-09-07\"), \"days\") = 357dateBetween(parseDate(\"2030-01-01\"), now(), \"years\") = 6

dateRange

返回由开始日期和结束日期构成的日期范围。

dateRange(prop(\"Start Date\"), prop(\"End Date\")) = @2022年9月7日 → 2023年9月7日

dateStart

检索日期范围的开始日期。

dateStart(prop(\"Date Range\")) = @2022年9月7日dateBetween(dateStart(prop(\"Date Range\")), dateEnd(prop(\"Date Range\")), \"days\") = -365

dateEnd

检索日期范围的结束日期。

dateEnd(prop(\"Date Range\")) = @2023年9月7日dateBetween(dateEnd(prop(\"Date Range\")), dateStart(prop(\"Date Range\")), \"days\") = 365

timestamp

返回 Unix 毫秒时间戳的整数,对应于自 1970 年 1 月 1 日起的毫秒数。

timestamp(now()) = 1693443300000

fromTimestamp

返回从 Unix 毫秒时间戳搭建的日期,对应于自 1970 年 1 月 1 日起的毫秒数。

fromTimestamp(1689024900000) = @2023年7月10日 下午2:35

formatDate

使用自定义格式字符串设置日期格式。该格式字符串可以包含以下标记来代表日期的不同部分:\"YYYY\" 表示年,\"MM\" 表示月,\"DD\" 表示日,\"h\" 表示小时,\"mm\" 表示分钟。

formatDate(now(), "MMMM D, Y") = "2023年8月30日"
formatDate(now(), "MM/DD/YYYY")
= "08/30/2023"
formatDate(now(), "h:mm A")
= "下午5:55"

formatNumber

"Revenue: " + formatNumber(prop("Number"), "usd", 0).style("green")

parseDate

根据 ISO 8601 标准解析日期。

parseDate(\"2022-01-01\") = @2022年1月1日parseDate(\"2022-01-01T00:00Z\") = @2021年12月31日 下午4:00

name

返回人员的姓名。

name(prop(\"Created By\"))prop(\"Pioneers\").map(name(current)).join(\", \") = \"Grace Hopper, Ada Lovelace\"

电子邮件

返回人员的电子邮件地址。

email(prop(\"Created By\"))prop(\"People\").map(email(current)).join(\", \")

时间

返回值列表中指定索引处的值。

at([1, 2, 3], 1) = 2

first

返回列表中的第一个元素。

first([1, 2, 3]) = 1

上一个

返回列表中的最后一个元素。

last([1, 2, 3]) = 3

slice

从提供的起始索引(包含)到结束索引(可选,不包含)处返回输入列表的一个子集。

slice([1, 2, 3], 1, 2) = [2]slice(["a", "b", "c"], 1) = ["b", "c"]

concat

将其参数拼接起来并返回结果。

concat([1, 2], [3, 4]) = [1, 2, 3, 4]concat([\"a\", \"b\"], [\"c\", \"d\"]) = [\"a\", \"b\", \"c\", \"d\"]

排序

返回排序后的列表。

sort([3, 1, 2]) = [1, 2, 3]

reverse

颠倒列表中元素的顺序。

reverse(["green", "eggs", "ham"]) = ["ham", "eggs", "green"]

join

插入连接符,将数组中的所有元素拼接成一个字符串并返回该字符串。

join(["a", "b", "c"], ", ") = "a, b, c"join(["dog", "go"], "") = "doggo"

split

返回通过分隔符拆分字符串输入而创建的值的列表。

split("apple,pear,orange", ",") = ["apple", "pear", "orange"]

唯一

返回输入列表中唯一值的列表。

unique([1, 1, 2]) = [1, 2]

includes

如果列表包含指定的值,则返回 true,否则返回 false。

includes(["a", "b", "c"], "b") = trueincludes([1, 2, 3], 4) = false

查找

返回列表中第一个满足条件的元素。

find([\"a\", \"b\", \"c\"], current == \"b\") = \"b\"find([1, 2, 3], current > 100) = Empty

findIndex

返回满足条件的第一个元素的索引。

findIndex([\"a\", \"b\", \"c\"], current == \"b\") = 1findIndex([1, 2, 3], current > 100) = -1

筛选

针对第一个参数中的值应用第二个参数中的表达式,如果表达式返回 true,则返回该数值。

filter([1, 2, 3], current > 1) = [2, 3]filter([\"a\", \"b\", \"c\"], current == \"a\") = [\"a\"]

some

如果提供的表达式对列表中的任何条目均返回 true,则返回 true,否则返回 false。

some([1, 2, 3], current == 2) = truesome([\"a\", \"b\", \"c\"], current.length > 2) = false

如果表达式对列表中的任何条目均返回 true,则返回 true,否则返回 false。

every([1, 2, 3], current > 0) = trueevery([\"a\", \"b\", \"c\"], current == \"b\") = false

地图

返回一个列表,该列表包含将第二个参数应用于第一个参数中的每个元素后的结果。

map([1, 2, 3], current + 1) = [2, 3, 4]map([1, 2, 3], current + index) = [1, 3, 5]

flat

将列表中的多个列表转化为一个列表。

flat([1, 2, 3]) = [1, 2, 3]flat([[1, 2], [3, 4]]) = [1, 2, 3, 4]

id

返回页面的 id。如果未提供页面,则返回公式所在页面的 id。

id()
id(prop("Relation").first())

equal

如果参数相等,则返回 true,否则返回 false。

equal(1, 1) = true"a" == "b" = false

unequal

如果参数相等,则返回 false,否则返回 true。

unequal(1, 2) = true"a" != "a" = false

let

通过第一个参数的名称和第二个参数的值引入变量,并返回可以使用该变量的表达式的结果。

let(person, \"Alan\", \"Hello, \" + person + \"!\") = \"Hello, Alan!\"let(radius, 4, round(pi() * radius ^ 2)) = 50

lets

为多个变量赋值,并对使用这些变量的表达式求值。

lets(a, \"Hello\", b, \"world\", a + \" \" + b) = \"Hello world\"lets(base, 3, height, 8, base * height / 2) = 12

trim

移除文本开头和结尾的空格。

" notion ".trim() = "notion"


给予反馈

这个资源有帮助吗?


Powered by Fruition