type
Post
status
Published
date
Jun 21, 2026 21:24
slug
summary
tags
小橘子
Notion
category
Notion
icon
password
comment
Notion 函数
属性
- 属性是指数据库每一列的属性种类,包含公式
- 公式即是函数
- 公式几乎支持所有属性类型。
- 公式类型与属性类型不同
属性类型 | 例子 | 公式类型 |
Title主题 | prop(“Title”)prop(“Title”).length() | Text文本 |
Text文本 | prop(“Text”)prop(“Text”).length() | Text文本 |
Select单选 | prop(“Priority”) == “High” | Text文本 |
Multi-Select多选 | prop(“Tags”).length()prop(“Tags”).includes(“Finance”) | Text (list)文本(列表) |
Checkbox复选框 | prop(“Checkbox”)not prop(“Checkbox”) | Boolean布尔值,返回True or Flase |
Email,URL,Phone Number电子邮件,网址,电话 | !empty(prop(“Phone”))!empty(prop(“Email”))link(“Call”, “tel:” + prop(“Phone”)) | Text文本 |
Unique ID唯一标识ID | prop("Task ID").split("-").first() ← Prefixprop("Task ID").split("-").last() ← ID | Text文本 |
Created By,Edited By创建者,编辑者 | prop(“Created By”).name()prop(“Created By”).email() | Person人员 |
Person人员 | prop(“Person”)prop(“Person”).at(0).name()prop(“Person”).map(current.email()) | Person (list)人员(列表) |
Date,Created Time,Last Edited Time日期,创建日期,上次编辑时间 | prop(“Due Date”) > now()dateBetween(prop(“Birthday”), now(), “days”) | Date日期 |
Number数字 | prop(“Number”) / 2pi() * prop(“Radius”) ^ 2 | Number数字 |
Relation关联关系 | prop(“Tasks”).length()prop(“Tasks”).filter(current.prop(“Status”) !== “Done”) | Page (list)页面(列表) |
Rollup汇总 | prop(“Purchases”).length()prop(“Average cost”) * 12 | Number, date, or list of any type. Depends on rollup configuration.数字,日期,或者任何类型的列表。具体取决于汇总的配置 |
内置函数
- 内置函数是语言中内置的特定符号和值,用于帮助制定计算
内置函数 | 例子 | 函数运算类型 |
+,-,*,% | 2 * pi()"hello" + "world" | 数学运算符 |
true,false | truefalse | 布尔值 |
==,>,>=,<,<= | 123 == 123 = true"Notion" == "Motion" = false | 比较运算符 |
and,or,not | and:true and falsetrue && falseand(true, false)or:true or false!true | 逻辑运算符 |
?: | X ? Y : Z is equivalent to if(X, Y, Z) | 三元运算符 |
函数
- Notion函数支持以下功能
函数名称 | 描述 | 例子 |
if | 如果条件为真,则返回第一个值;否则,返回第二个值。 | if(true, 1, 2) = 1,if(false, 1, 2) = 2, prop("Checked") == true ? "Complete" : "Incomplete" |
ifs | 返回与第一个真条件对应的值。这可以作为多个嵌套 if() 语句的替代方案。 | ifs(true, 1, true, 2, 3) = 1ifs(false, 1, false, 2, 3) = 3 |
empty | 如果值为空,则返回 true。0、“”和 [] 都被视为空值。 | empty(0) = trueempty([]) = true |
length | 返回文本或列表值的长度。 | length("hello") = 5length([1, 2, 3]) = 3 |
substring | 返回从起始索引(包含)到结束索引(可选,不包含)的文本子字符串。 | substring("Notion", 0, 3) = "Not"substring("Notion", 3) = "ion" |
contains | 如果搜索字符串存在于值中,则返回 true。 | contains("Notion", "ot") = true |
test | 如果值与正则表达式匹配,则返回 true,否则返回 false。 | test("Notion", "Not") = truetest("Notion", "\\d") = false |
match | 返回所有与正则表达式匹配的项,以列表形式呈现。 | match("Notion Notion", "Not") = ["Not", "Not"]match("Notion 123 Notion 456", "\\d+") = ["123", "456"] |
replace | 将正则表达式的第一个匹配项替换为替换值。 | replace("Notion Notion", "N", "M") = "Motion Notion" |
replaceAll | 将正则表达式的所有匹配项替换为替换值。 | replaceAll("Notion Notion", "N", "M") = "Motion Motion"replaceAll("Notion 123", "\\d", "") = "Notion" |
lower | 将文本转换为小写。 | lower("NOTION") = "notion" |
upper | 将文本转换为大写。 | upper("notion") = "NOTION" |
repeat | 将文本重复指定次数。 | 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" | style("Notion", "b", "u")= "``**Notion**``"style("Notion", "blue", "gray_background") |
unityle | 移除文本的格式样式。如果未指定样式,则移除所有样式。 | unstyle("Text")unstyle("Text", "b") |
format | 返回格式化为文本的值。 | format(1234) = "1234"format(now()) = "August 30, 2023 17:55" |
add | 返回两个数的和。 | add(5, 10) = 155 + 10 = 15 |
subtract | 返回两个数的差。 | subtract(5, 10) = -55 - 10 = -5 |
multiply | 返回两个数的乘积。 | multiply(5, 10) = 505 * 10 = 50 |
mod | 返回第一个数对第二个数取模的结果。 | mod(5, 10) = 55 % 10 = 5 |
pow | 返回底数的指数幂的结果。 | pow(5, 10) = 97656255 ^ 10 = 9765625 |
divide | 返回两个数的商。 | divide(5, 10) = 0.55 / 10 = 0.5 |
min | 返回参数个数最少的那个。 | 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 | 返回其参数的中间值。 | median(1, 2, 4) = 2median([1, 2, 3], 4) = 2.5 |
mean | 返回其参数的算术平均值。 | mean(1, 2, 3) = 2mean([1, 2, 3], 4, 5) = 3 |
abs | 返回该数字的绝对值。 | abs(10) = 10abs(-10) = 10 |
round | 返回一个数字四舍五入到最接近的整数后的值。支持一个或两个参数。如果使用两个参数,第一个参数表示数字的值,第二个参数表示要四舍五入到的小数位数。 | round(0.4) = 0round(-0.6) = -1round(1.234, 0) = 1round(1.234, 2) = 1.23round(1234, -2) = 1200 |
ceil | 返回大于或等于该数字的最小整数。 | ceil(0.4) = 1ceil(-0.6) = 0 |
floor | 返回小于或等于该数字的最大整数。 | 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 |
in | 返回该数的自然对数。 | ln(2.718281828459045) = 1ln(10) = 2.302585092994046 |
log10 | 返回该数的以 10 为底的对数。 | log10(10) = 1log10(100000) = 5 |
log2 | 返回该数的以 2 为底的对数。 | log2(4) = 2log2(1024) = 10 |
sign | 如果数字为正数则返回 1,如果数字为负数则返回 -1,如果数字为零则返回 0。 | sign(-10) = -1sign(10) = 1 |
pi | 返回圆的周长与其直径之比。 | pi() = 3.141592653589793 |
e | 返回自然对数的底数。 | e() = 2.718281828459045 |
toNumber | 从文本中解析数字。 | toNumber("2") = 2toNumber(now()) = 1693443300000toNumber(true) = 1 |
now | 返回当前日期和时间。 | now() = @August 30, 2023 5:55 PM |
today | 返回不带时间的当前日期。 | today() = @April 19, 2024 |
minute | 返回日期的分钟数(0-59)。 | minute(parseDate("2023-07-10T17:35Z")) = 35 |
hour | 返回日期的小时数(0-23)。 | hour(parseDate("2023-07-10T17:35Z")) = 17 |
day | 返回日期对应的星期几,介于 1(星期一)和 7(星期日)之间。 | day(parseDate("2023-07-10T17:35Z")) = 1 |
date | 返回指定日期(1-31)中的日期。 | date(parseDate("2023-07-10T17:35Z")) = 10 |
week | 返回日期所在年份的 ISO 周数(1-53)。 | week(parseDate("2023-01-02")) = 1 |
month | 返回日期对应的月份(1-12)。 | month(parseDate("2023-07-10T17:35Z")) = 7 |
year | 返回日期对应的年份。 | year(now()) = 2023 |
dateAdd | 为日期增加时间。单位参数可取值: "years", "quarters", "months", "weeks", "days", "hours", or "minutes". | dateAdd(now(), 1, "days") = @August 31, 2023 5:55 PMdateAdd(now(), 2, "months") = @October 30, 2023 5:55PMdateAdd(now(), 3, "years") = @August 30, 2026 5:55 PM |
dateSubtract | 从日期中减去指定时间。单位参数可选值为: "years", "quarters", "months", "weeks", "days", "hours", or "minutes". | dateSubtract(now(), 1, "days") = @August 29, 2023 5:55 PMdateSubtract(now(), 2, "months") = @June 30, 2023 5:55 PMdateSubtract(now(), 3, "years") = @August 30, 2020 5:55 PM |
dateBetween | 返回两个日期的差值。单位参数可选: "years", "quarters", "months", "weeks", "days", "hours", or "minutes". | dateBetween(now(), parseDate("2022-09-07"), "days") = 357dateBetween(parseDate("2030-01-01"), now(), "years") = 6 |
dateRange | 返回由开始日期和结束日期构成的日期范围。 | dateRange(prop("Start Date"), prop("End Date")) = @September 7, 2022 → September 7, 2023 |
dateStart | 返回日期范围的起始日期。 | dateStart(prop("Date Range")) = @September 7, 2022dateBetween(dateStart(prop("Date Range")), dateEnd(prop("Date Range")), "days") = -365 |
dateEnd | 返回日期范围的结束日期。 | dateEnd(prop("Date range")) = @September 7, 2023dateBetween(dateEnd(prop("Date Range")), dateStart(prop("Date Range")), "days") = 365 |
timestamp | 返回当前 Unix 时间戳,表示自 1970 年 1 月 1 日以来经过的毫秒数。 | timestamp(now()) = 1693443300000 |
formTimestamp | 返回给定 Unix 时间戳对应的日期。该时间戳表示自 1970 年 1 月 1 日以来经过的毫秒数。注意:返回的日期将不包含秒和毫秒信息。 | fromTimestamp(1689024900000) = @July 10, 2023 2:35 PM |
formatDate | 使用自定义格式字符串格式化日期。格式字符串可以包含以下文本来表示日期的各个部分: "YYYY"年、"MM"月、"DD"日、"h"小时、"mm"分钟。 | formatDate(now(), "MMMM D, Y") = "August 30, 2023"formatDate(now(), "MM/DD/YYYY") = "08/30/2023"formatDate(now(), "h:mm A") = "17:55 PM" |
formatNumber | ㅤ | “Revenue:” + formatNumber(prop(“Number”), “usd”, 0).style(“green”) |
parseDate | 返回按照 ISO 8601 标准解析的日期。 | parseDate("2022-01-01") = @January 1, 2022parseDate("2022-01-01T00:00Z") = @December 31, 2021 4:00 PM |
name | 返回人名。 | name(prop("Created By"))prop("Pioneers").map(name(current)).join(", ") = "Grace Hopper, Ada Lovelace" |
email | 返回某人的电子邮件地址。 | email(prop("Created By"))prop("People").map(email(current)).join(", ") |
at | 返回列表中指定索引处的值。 | at([1, 2, 3], 1) = 2 |
first | 返回列表中的第一个元素。 | first([1, 2, 3]) = 1 |
last | 返回列表中的最后一个元素。 | 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 | 返回已排序的列表。 | 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 | 返回输入列表中唯一值的列表。 | unique([1, 1, 2]) = [1, 2] |
includes | 如果列表包含指定的值,则返回 true,否则返回 false。 | includes(["a", "b", "c"], "b") = trueincludes([1, 2, 3], 4) = false |
find | 返回列表中第一个满足条件的元素。 | 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 |
filter | 返回列表中满足条件的值。 | filter([1, 2, 3], current > 1) = [2, 3]filter(["a", "b", "c"], current == "a") = ["a"] |
some | 如果列表中有任何一项满足给定条件,则返回 true,否则返回 false。 | some([1, 2, 3], current == 2) = truesome(["a", "b", "c"], current.length > 2) = false |
every | 如果列表中的每个项目都满足给定的条件,则返回 true,否则返回 false。 | every([1, 2, 3], current > 0) = trueevery(["a", "b", "c"], current == "b") = false |
map | 返回一个列表,其中包含对输入列表中的每个项目调用表达式的结果。 | 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()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" |
- Author:小橘子Single
- URL:https://notion.ergua.site/article/38682990-fae9-8001-ae61-fe763a1b9232
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!

