https://images.ctfassets.net/spoqsaf9291f/4KiAJKJIvqG3HpZUHlTeUA/a357dc616acd58cdee1c738022c9c983/formula_functions_hero.png

简介

Notion 函数可以通过各种属性和方法来操作。在这里,你将找到它们 ➗


<aside> <img src="/icons/attachment_orange.svg" alt="/icons/attachment_orange.svg" width="40px" /> 想了解 Notion 函数基础知识吗?查看 这篇文章 →

</aside>

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") 布尔
电子邮件、网址、电话 !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"
布尔值:
truefalse true
false
比较运算符:
==>>=<<= 123 == 123 = true
"Notion" == "Motion" = false
逻辑运算符:
andornot 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) = 1
if(false, 1, 2) = 2
prop("Checked") == true ? "Complete" : "Incomplete"
ifs 返回与第一个为真的条件相对应的值。这可以用作多个嵌套 if() 语句的替代方案。 ifs(true, 1, true, 2, 3) = 1
ifs(false, 1, false, 2, 3) = 3
empty 如果值为空,则返回true。0,"",和 [] 被视为为空。 empty(0) = true
empty([]) = true
length 返回文本或列表值的长度。 length("hello") = 5
length([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") = true
test("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 从标签文本和网址创建超链接。 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")
unstyle 从文本中删除格式样式。如果未指定样式,则删除所有样式。 unstyle("Text")
unstyle("Text", "b")
format 将值格式化为文本。 format(1234) = "1234"
format(now()) = "August 30, 2023 17:55"
add 返回两个数字的和。 add(5, 10) = 15
5 + 10 = 15
subtract 返回两个数字的差。 subtract(5, 10) = -5
5 - 10 = -5
multiply 返回两个数字的乘积。 multiply(5, 10) = 50
5 * 10 = 50
mod 返回第一个数字对第二个数字取模的结果。 mod(5, 10) = 5
5 % 10 = 5
pow 返回基数的指数幂的结果。 pow(5, 10) = 9765625
5 ^ 10 = 9765625
divide 返回两个数字的商。 divide(5, 10) = 0.5
5 / 10 = 0.5
min 返回参数中最小的数字。 min(1, 2, 3) = 1
min([1, 2, 3]) = 1
max 返回参数中最大的数。 max(1, 2, 3) = 3
max([1, 2, 3]) = 3
sum 返回其参数的总和。 sum(1, 2, 3) = 6
sum([1, 2, 3], 4, 5) = 15
median 返回其参数的中间值。 median(1, 2, 4) = 2
median([1, 2, 3], 4) = 2.5
mean 返回其参数的算术平均值。 mean(1, 2, 3) = 2
mean([1, 2, 3], 4, 5) = 3
abs 返回一个数的绝对值。 abs(10) = 10
abs(-10) = 10
round 返回一个数四舍五入到最接近的整数的值。 round(0.4) = 0
round(-0.6) = -1
ceil 返回大于或等于给定数字的最小整数。 ceil(0.4) = 1
ceil(-0.6) = 0
floor 返回小于或等于给定数字的最大整数。 floor(0.4) = 0
floor(-0.6) = -1
sqrt 返回给定数字的正平方根。 sqrt(4) = 2
sqrt(7) = 2.6457513110645907
cbrt 返回给定数字的立方根。 cbrt(9) = 2.080083823051904
cbrt(64) = 4
exp 返回 e^x,其中 x 是参数,e 是欧拉数(2.718…),自然对数的底数。
exp(1) = 2.718281828459045
exp(-1) = 0.36787944117144233
ln 返回数字的自然对数。 ln(2.718281828459045) = 1
ln(10) = 2.302585092994046
log10 返回数字的以 10 为底的对数。 log10(10) = 1
log10(100000) = 5
log2 返回数字的以 2 为底的对数。 log2(4) = 2
log2(1024) = 10
sign 如果数字为正数,则返回 1,如果数字为负数,则返回 -1,如果数字为零,则返回 0。 sign(-10) = -1
sign(10) = 1
pi 返回圆的周长与直径的比值。 pi() = 3.141592653589793
e 返回自然对数的底数。 e() = 2.718281828459045
toNumber 从文本中解析出一个数字。 toNumber("2") = 2
toNumber(now()) = 1693443300000
toNumber(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""minutes" dateAdd(now(), 1, "days") = @August 31, 2023 5:55 PM
dateAdd(now(), 2, "months") = @October 30, 2023 5:55PM
dateAdd(now(), 3, "years") = @August 30, 2026 5:55 PM
dateSubtract 从日期中减去时间。单位参数可以是以下之一:"years""quarters""months""weeks""days""hours""minutes" dateSubtract(now(), 1, "days") = @August 29, 2023 5:55 PM
dateSubtract(now(), 2, "months") = @June 30, 2023 5:55 PM
dateSubtract(now(), 3, "years") = @August 30, 2020 5:55 PM
dateBetween 返回两个日期之间的差异。单位参数可以是以下之一:"years""quarters""months""weeks""days""hours""minutes" dateBetween(now(), parseDate("2022-09-07"), "days") = 357
dateBetween(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, 2022
dateBetween(dateStart(prop("Date Range")), dateEnd(prop("Date Range")), "days") = -365
dateEnd 返回日期范围的结束。 dateEnd(prop("Date range")) = @September 7, 2023
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) = @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"
parseDate 根据 ISO 8601 标准返回解析后的日期。 parseDate("2022-01-01") = @January 1, 2022
parseDate("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") = true
includes([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") = 1
findIndex([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) = true
some(["a", "b", "c"], current.length > 2) = false
every 如果列表中的每一项都满足给定条件,则返回 true;否则返回 false。 every([1, 2, 3], current > 0) = true
every(["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(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