Notionのデータベースでは、関数を入力することができます。+ボタンから新たなプロパティを追加し、「プロパティの種類」で「関数」を選びます。

関数を編集する際は、「編集」をクリックすると編集画面に移ることができます。
最も基本的な関数
prop()
propはproperty(プロパティ)の略です。prop()でプロパティの名前を指定すれば、そのプロパティを呼び出せます。
prop("点数")

データタイプを変換する関数
format()
数値、真理値、日付を文字列に変換する関数です。
format(3) = "3"
toNumber()
真理値、日付、文字列を数値に変換する関数です。
format("3") = 3
formatDate()
日付の表示方法を変えることのできる関数です。
now() = 2022年7月11日 午後 11:44
formatDate(now(),"YYYY年M月D日HH時mm分") = 2022年7月11日23時44分
formatDate(now(), "YYYY/MM/DD hh:mm A") = 2022/07/11 11:44 PM
論理関数
trueかfalseを返す関数です。最も分かりやすい使い方はチェックボックスへの応用です。チェックボックスは命題がtrueであればチェックがつき、falseであればチェックが外れます。

and(), or()
and()は、2つの引数の論理積を求める関数です。2つの引数がともに真である場合にTrueを、そうでない場合にはFalseを出力します。
and( 1 == 1, 2 == 2 ) = true
and( 1 == 1, 2 == 3 ) = false
and( 1 == 2, 2 == 3 ) = false
or()は、2つの引数の論理和を求める関数です。どちらかの引数が真である場合にTrueを出力します。
or( 1 == 1, 2 == 2 ) = true
or( 1 == 1, 2 == 3 ) = true
or( 1 == 2, 2 == 3 ) = false
empty()
値が空白であるかをテストします。
empty("") = true
empty("notion") = false
equal(), unequal()
equal()は、2つの引数が同じであるかをテストする関数です。
equal("notion","notion") = true
equal("notion","hello") = false
equal(1,1) = true
equal(1,2) = false
unequal()はその逆で、2つの引数が異なる場合にtrueを出力します。
equal("notion","notion") = false
equal("notion","hello") = true
equal(1,1) = false
equal(1,2) = true
if()
条件式を作る関数です。
if(条件,条件が正しい時の分岐 , 条件が正しくないときの分岐)
if(1==1, "○", "×") = "○"
if(1==2, "○", "×") = "×"
実際には、このような感じで条件分岐をします。点数が80点以上であれば合格、そうでなければ不合格と出力されます。prop(“点数”)は、「点数」という列の値を取得するための数式です。
if(prop("点数") >= 80, "合格", "不合格")
「条件が正しい時」「正しくない時」に、さらに条件分岐を付け加えることもできます。例えばテストの点数に応じて「優」「良」「可」と条件分岐させたいときは、このようにします。
if(prop("点数") >= 80, "優", if(prop("点数") >= 60, "良", "可"))
上の数式では、まず点数が80点以上であるかを判定し、そうであれば「優」を出力します。もし点数が80点未満であれば、次の条件分岐に移ります。もし点数が60点以上であれば「良」が出力され、もしそれも満たすことができなければ「可」が出力される仕組みになっています。
数値を操作する関数
add()
与えられた数値の和を求めます。
add(2,3) = 5
subtract()
与えられた数値の差を求めます。1番目の引数から2番目の引数を引いた値です。
add(2,3) = -1
add(3,2) = 1
multiply()
与えられた数値の積を求めます。
multiply(2,3) = 6
divide()
divide(割られる数, 割る数) = 商
divide(8,2) = 4
round()
四捨五入の関数です。最も近い整数に丸められます。
round(1.28) = 1
ceil(), floor()
ceil()は与えられた数値の切り上げを、floor()は与えられた数値の切り捨てをする関数です。
ceil(1.2) = 2
ceil(1.2) = 1
max(), min()
max()は与えられた引数の中で最大のものを、min()は最小のものを出力する関数です。
max(1,3,5,7,9) = 9
min(1,3,5,7,9) = 1
mod()
余りの値を求めます。
mod(割られる数, 割る数) = あまり
mod(4, 3) = 1
mod(4, 2) = 0
abs()
与えた数値の絶対値(absolute value)を返します。
abs(-10) = 10
abs(10) = 10
pow()
1番目の引数の2番目の引数乗を求めます。
pow(2,3) = 8
sqrt()
与えられた数値の平方根を求めます。
sqrt(1) = 1
sqrt(4) = 2
sqrt(9) = 3
cbrt()
与えられた数値の立方根を求めます。
cbrt(1) = 1
cbrt(8) = 2
exp()
自然対数eの数値乗を求めます。
exp(0) = 1
exp(1) = 2.718...
exp(2) = 7.389...
ln()
自然対数を取る関数です。
ln(1) = 0
ln(2) = 0.693...
log2(), log10()
それぞれ2と10を真数に持つ対数の値を計算します。
log2(8) = 3
log10(100) = 2
sign()
符号の正負を求める関数です。正であれば1を、負であれば-1を、0であれば0を返します。
sign(8) = 1
sign(-8) = -1
sign(0) = 0
テキストを操作する関数
concat()
テキスト同士をつなぎ合わせる関数です。
concat("こん"+"にち"+"は"+"!") = "こんにちは!"
contains()
1番目の引数の文字列に2番目の引数の文字列が含まれているかどうかを判定します。
contains("おはようございます", "は") = true
contains("東京都港区", "神奈川県") = false
join()
テキスト同士を指定した連結文字列を使ってつなぎ合わせる関数です。concat()と似ていますが、連結文字列を指定できる点が異なります。
join(" ", "My", "name", "is", "John.") = My name is John.
join(",", "リンゴ", "バナナ", "ミカン") = リンゴ,バナナ,ミカン
len()
テキストの長さを数えます(スペース含む)。
len("こんにちは") = 5
len("Hong Kong") = 9
replace()
文字列の一部を置換する関数です。
replace(文字列, 置換前の文字列, 置換後の文字列)
replace("私は東京都出身です", "東京都", "大阪府") = "私は大阪府出身です"
置換前の文字列と一致するものが複数ある場合は、一番最初に出てくる文字列のみが置換の対象となります。
replace("青森県・秋田県・山形県", "県", "市") = "青森市・秋田県・山形県")
replaceAll()
文字列中のすべての文字列を置換の対象にしたい場合は、replace()ではなくreplaceAll()を用います。使い方はreplace()と同様ですが、一致するすべての文字列が置換されます。
replaceAll("青森県・秋田県・山形県", "県", "市") = "青森市・秋田市・山形市")
slice()
文字列を切り取ってくれる関数です。
slice("文字列", 切り取り開始場所, 切り取り終了場所)
切り取り開始場所と切り取り終了場所の関係は少し複雑ですが、実際の例を見てみると分かりやすいと思います。
slice("notion", 0,6) = "notion"
slice("notion", 0,3) = "not"
slice("notion", 0,1) = "n"
slice("notion", 0,0) = ""
slice("notion", 1,3) = "ot"
slice("notion", 3,6) = "ion"
日付を操作する関数
now()
現在の日時を出力します。
now() = 2022年7月11日 午後 11:44
dateAdd()
日時の足し算をする関数です。1番目の引数で開始日時を、2番目の引数で足し算したい時間を、3番目の引数でその単位を指定します。単位は複数形でなければいけない点に注意。
dateAdd(開始日時, 足したい時間, 足したい時間の単位)
now() = 2022年7月11日 午後 11:44
dateAdd(now(), 1, "minutes") = 2022年7月11日 午後 11:45
dateAdd(now(), 1, "hours") = 2022年7月12日 午前 0:44
dateAdd(now(), 1, "days") = 2022年7月12日 午後 11:44
dateAdd(now(), 1, "weeks") = 2022年7月18日 午後 11:44
dateAdd(now(), 1, "months") = 2022年8月11日 午後 11:44
dateAdd(now(), 1, "years") = 2023年7月12日 午後 11:44
dateSubtract()
日時の引き算をする関数です。基本的な仕組みはdateAdd()と同様です。
dateAdd(開始日時, 引きたい時間, 引きたい時間の単位)
now() = 2022年7月11日 午後 11:44
dateAdd(now(), 2, "months") = 2022年5月11日 午後 11:44
dateBetween()
1番目の引数と2番目の引数の与えられた日時の差を計算します。単位は3番目の引数で指定します
dateBetween(prop("現在日時"), prop("作成日時"), "minutes") = 35
dateBetween(prop("現在日時"), prop("作成日時"), "seconds") = 2100
minute()
分を出力します。
now() = 2022年7月11日 午後 11:44
minute(now()) =44
hour()
時間を出力します。
now() = 2022年7月11日 午後 11:44
hour(now()) =11
date()
日を出力します。
now() = 2022年7月11日 午後 11:44
date(now()) =11
day()
曜日を出力します。日曜日が0で、土曜日が6となっています。
now() = 2022年7月11日 午後 11:44
day(now()) = 1
day(dateAdd(now(),5,"days")) = 6
month()
月を出力します。1月が0、12月が11となっているので、1つ数値がずれる点には注意。
now() = 2022年7月11日 午後 11:44
month(now()) =6
year()
年を出力します。
now() = 2022年7月11日 午後 11:44
year(now()) =2022
timestamp()
タイムスタンプを返します。
now() = 2022年7月11日 午後 11:44
timestamp(now()) = 1657594980000
start(), end()
範囲のある日時データの、開始日時と終了日時をそれぞれ取得します。
prop("期間") = 2022年7月10日 → 2022年7月12日
start(prop("期間")) = 2022年7月10日
end(prop("期間")) = 2022年7月12日