Touma Hoshino

数式の構成要素

Notionの数式では、さまざまなプロパティや関数を扱うことができます。以下がその一覧です。

プロパティ

数式は、ほぼすべてのプロパティをサポートしています。

プロパティの種類 形式
タイトル 文字列
テキスト 文字列
セレクト 文字列
マルチセレクト 文字列(リスト)
チェックボックス 真偽値
メールアドレス、URL、電話番号 文字列
ユニークID 文字列
作成者、最終更新者 ユーザー
ユーザー ユーザー(リスト)
日付、作成日時、最終更新日時 日付
数値 数値
リレーション ページ(リスト)
ロールアップ 数値、日付、または任意の種類のリスト(ロールアップの設定内容により異なります)

組み込み

Notionの数式では、真偽値や算術演算子、論理演算子などが組み込み要素として提供されています。

真偽値

真偽値には2つの状態しかなく、次のように考えることができます。

  • True or False
  • 1 or 0
  • On or Off
シンボル
true true true ? “🙆” : “🙅”
false false false ? “🙆” : “🙅”

算術演算子

算術演算子は、数値を操作するための基本的な演算子です。

算術 シンボル 関数
加算 + add() 5 + 3 = 8
減算 - subtract() 10 - 4 = 6
乗算 * multiply() 2 * 6 = 12
除算 / divide() 15 / 3 = 5
剰余(余り) % pow() 17 % 5 = 2
累乗 ^ mod() 2 ^ 3

論理演算子

論理演算子は、真偽値(ブール値)を操作するための演算子です。

論理 シンボル 関数
AND(論理積) and && and() 2 > 3 and 4 < 8
OR(論理和) or || or() 2 > 1 || 6 > 5
NOT(否定) not ! not() not empty(”こんにちは”)

比較演算子

比較演算子は、2つの値を比較するための演算子です。

比較 シンボル 関数
等しい == equal() 5 == 5
等しくない != unequal() 3 != 4
より大きい > 10 > 5
より小さい < 3 < 7
以上 >= 8 >= 8
以下 <= 6 <= 9

三項演算子

三項演算子は、条件に基づいて2つの値のうち1つを選択する演算子です。

条件の後に、? を置き、true の場合の値と false の場合の値をコロン : で区切ります。

条件 ? trueの場合の値 : falseの場合の値

例えば、スコア > 80 ? "合格" : "不合格" というように使用します。この式は、スコアが80より大きい場合は“合格”を、そうでない場合は“不合格”を返します。

演算子の優先順位

演算子の優先順位は、複数の演算子が含まれる式の評価順序を決定します。Notionの数式では、一般的な数学の規則に従って演算子の優先順位が適用されます。括弧 () を使用して、特定の部分を優先的に評価することもできます。

優先順位 演算子 結合性 シンボル
1 括弧 なし ()
2 論理否定 右から左 !,not
3 べき乗 右から左 ^
4 乗算、除算、剰余 左から右 *, /, %
5 加算、減算 左から右 +, -
6 比較演算子 左から右 <, <=, >, >=, ==, !=
7 論理積 左から右 and
8 論理和 左から右 or

関数

Notion数式では、以下の関数がサポートされています。

関数名 説明 入力例 出力例
if 条件が真の場合は最初の値を返し、それ以外の場合は2番目の値を返します。 if(1 + 1 == 2, true, false) true
ifs 最初の真の条件に対応する値を返します。これは、入れ子になっている複数のif()文の代わりに使用できます。 ifs(1 + 1 == 3, false, 1 + 1 == 2, true) true
empty 値が空の場合はtrueを返します。0、“”、[]は空とみなされます。 empty("") true
length 文字列またはリストの値の長さを返します。 length("Hello World") 12
substring 開始インデックス(含む)から終了インデックス(省略可能、含まない)までの文字列のサブ文字列を返します。 substring("Dangerfield", 0, 6) Danger
contains 値に検索文字列が存在する場合はtrueを返します。 contains("りんごは美味しいよ", "りんご") true
test 値が正規表現と一致する場合はtrueを返し、それ以外の場合はfalseを返します。 test("りんごは美味しいよ", "りんご") true
match 正規表現に一致するすべての一致をリストとして返します。 match("Tokyo 123 Osaka 321", "\d+") 123, 321
replace 正規表現の最初の一致を置換値に置き換えます。 replace("Pogo","Po","Dog") Doggo
replaceAll 正規表現のすべての一致を置換値に置き換えます。 replaceAll("Dogs Dogs Dogs","Dogs","Cats") Cats Cats Cats
lower 文字列を小文字に変換します。 lower("Hello World") hello world
upper 文字列を大文字に変換します。 upper("Hello World") HELLO WORLD
repeat 文字列を指定された回数だけ繰り返します。 repeat("👀", 5) 👀👀👀👀👀
link ラベルテキストとURLからハイパーリンクを作成します。 link("とうまろ / Notionをプロのツールに変える。", "https://www.youtube.com/@heytoumaro") とうまろ / Notionをプロのツールに変える。
style 文字列に書式や色を設定します。有効な書式設定スタイルには、"b"(太字)、"u"(下線)、"i"(斜体)、"c"(コード)、"s"(取り消し線)があります。有効な色には、"gray""brown""orange""yellow""green""blue""purple""pink""red" があります。背景色を設定するには、"_background" を色の末尾に追加します。 style("こんにちは世界", "b", "i",) こんにちは世界
unstyle 文字列から書式スタイルを削除します。スタイルが指定されていない場合は、すべてのスタイルが削除されます。 unstyle("こんにちは世界", "i",) こんにちは世界
format 文字列としてフォーマットされた値を返します。 format(4) 4
add 2つの数値の和を返します。 add(5, 10) 15
subtract 2つの数値の差を返します。 subtract(5, 10) -5
multiply 2つの数値の積を返します。 multiply(5, 10) 50
mod 最初の数値を2番目の数値で割った際の余りを返します。 mod(5, 10) 5
pow 基数のべき乗の結果を返します。 pow(5, 10) 9765625
divide 2つの数値の商を返します。 divide(5, 10) 0.5
min 引数の最小数を返します。 min(1, 2, 3) 1
max 引数の最大数を返します。 max(1, 2, 3) 3
sum 引数の和を返します。 sum(1, 2, 3) 6
median 引数の中央に来る値を返します。 median(1, 2, 3) 2
mean 引数の算術平均を返します。 mean(3, 12, 30) 15
abs 数値の絶対値を返します。 abs(-42) 42
round 最も近い整数に丸められた数値を返します。 round(0.4) 0
ceil 小数点を切り上げた整数を返します。 ceil(4.2) 5
floor 小数点を切り捨てた整数を返します。 floor(4.2) 4
sqrt 数値の正の平方根を返します。 sqrt(16) 4
cbrt 数値の立方根を返します。 cbrt(64) 4
exp e^xを返します。xは引数、eは自然対数の底であるオイラー数(2.718…)です。 exp(2) 7.389056098931
ln 数値の自然対数を返します。 ln(20) 2.995732273554
log10 数値の10を底とする対数を返します。 log10(1000) 3
log2 数値の2を底とする対数を返します。 log2(64) 6
sign 数値が正の場合は1、負の場合は-1、0の場合は0を返します。 sign(-5) -1
pi 円の円周とその直径の比率を返します。 pi() 3.141592653589793
e 自然対数の底を返します。 e() 2.718281828459045
toNumber 文字列から数値を解析します。 toNumber("42") 42
now 現在の日付と時刻を返します。 now() August 18, 2024 2:10 PM
today 現在の日付を時刻なしで返します。 today() October 6, 2024
minute 日付の分(0~59)を返します。 minute(now()) 9
hour 日付の時間(0~23)を返します。 hour(now()) 14
day 1(月曜日)から7(日曜日)までの日付を返します。 day(now()) 4
date 日付(1~31)から月の日付を返します。 date(now()) 18
week 日付の年のISO週番号(1~53)を返します。 week(now()) 37
month 日付の月(1~12)を返します。 month(now()) 4
year 日付の年を返します。 year(now()) 2024
dateAdd 日付に時間を追加します。最後の引数は、"years""quarters""months""weeks""days""hours""minutes" のいずれかの単位を指定します。 dateAdd(now(),3,"months") November 18, 2024 2:11 PM
dateSubtract 日付から時間を引きます。最後の引数は、"years""quarters""months""weeks""days""hours""minutes" のいずれかの単位を指定します。 dateSubtract(now(),3,"months") May 18, 2024 2:11 PM
dateBetween 2つの日付の間の時間を返します。最後の引数は、"years""quarters""months""weeks""days""hours""minutes" のいずれかの単位を指定します。 dateBetween(now(),prop("Date"),"days") 9
dateRange 開始日と終了日からなる日付範囲を返します。 dateRange(parseDate("2023"), parseDate("2023-02")) January 1, 2023 → February 1, 2023
dateStart 日付範囲の始めを返します。 dateStart(prop("Date")) August 18, 2024
dateEnd 日付範囲の終わりを返します。 dateEnd(prop("Date")) August 25, 2024
timestamp 1970年1月1日から経過したミリ秒数を表す、現在のUnixタイムスタンプを返します。 timestamp(now()) 1660853460000
fromTimestamp 指定されたUnixタイムスタンプの日付を返します。タイムスタンプは、1970年1月1日から経過したミリ秒数を表します。注: 返される日付は、秒とミリ秒を保持しません。 fromTimestamp(1656012840000) June 23, 2022 1:34 PM
formatDate カスタムの書式設定文字列を使用して日付の書式を設定します。書式設定文字列には、日付の一部を表す次の文字列を含めることができます。"YYYY" は年、"MM" は月、"DD" は日、"h" は時、"mm" は分です。 parseDate("2023-01-01") January 1, 2023
parseDate ISO8601規格に従って解析された日付を返します。 parseDate("2024-01-01") January 1, 2024
name ユーザーの名前を返します。 prop("Created By").name() Toumaro
email ユーザーのメールアドレスを返します。 prop("Created By").email() xxxyyyzzz@sample.com
at リスト内の指定したインデックス位置にある値を返します。 at([1, 2, 3], 1) 2
first リストの最初の項目を返します。 first([1, 2, 3]) 1
last リストの最後の項目を返します。 last([1, 2, 3]) 3
slice 指定した開始インデックス(含む)から終了インデックス(省略可能、含まない)までのリストの項目を返します。 slice(["りんご", "オレンジ", "ぶどう", "いちご"], 1, 2) オレンジ
concat 複数のリストを連結した結果を返します。 concat(["りんご","オレンジ"] ,["ぶどう","いちご"]) りんご, オレンジ, ぶどう, いちご
sort リストを並べ替えられた順序で返します。 sort([2, 3, 1]) 1, 2, 3
reverse 逆順に並べ替えたリストを返します。 reverse([1, 2, 3]) 3, 2, 1
join 各値の間に結合子を配置したリストの値を返します。 join(["りんご","オレンジ","ぶどう","いちご"], ", ") りんご, オレンジ, ぶどう, いちご
split 文字列入力を区切り記号で分割した値のリストを返します。 split("One-Two-Three", "-") One, Two, Three
unique 入力リスト内の一意の値のリストを返します。 unique([1, 1, 2]) 1, 2
includes リストに指定された値が含まれている場合はtrueを返し、それ以外の場合はfalseを返します。 includes(["りんご", "オレンジ", "ぶどう", "いちご"], "オレンジ") true
find 条件がtrueと評価されたリスト内の最初の項目を返します。 find(["a", "b", "c"], currentValue == "b") b
findIndex 条件がtrueであるリスト内の最初の項目のインデックスを返します。 findIndex(["a", "b", "c"], currentValue == "b") 1
filter 条件がtrueであるリスト内の値を返します。 filter([1, 2, 3], currentValue > 1) 2, 3
some リスト内のいずれかの項目について、指定した条件を満たす場合はtrueを返し、それ以外の場合はfalseを返します。 some([1, 2, 3], currentValue == 2) true
every リスト内のすべての項目について、指定した条件を満たす場合はtrueを返し、それ以外の場合はfalseを返します。 every([1, 2, 3], currentValue > 0) true
map 入力リスト内のすべての項目に対して数式を実行した結果が入力されたリストを返します。 map([1, 2, 3], currentValue + 1) 2, 3, 4
flat 複数のリストのリストを、1つのリストにフラット化します。 flat([[1, 2], [3, 4]]) 1, 2, 3, 4
id ページのIDを返します。ページが指定されていない場合は、数式が存在するページのIDを返します。 id() c5d67d15854744869cc4a062fb7b1377
equal 両方の値が等しい場合はtrueを返し、それ以外の場合はfalseを返します。 equal(1, 1) true
unequal 両方の値が等しい場合はfalseを返し、それ以外の場合はtrueを返します。 unequal(1, 2) true
let 変数に値を代入し、その変数を使用して数式を評価します。 let(a, 2, a + 2) 4
lets 複数の変数に値を代入し、それらの変数を使用して数式を評価します。 lets(a, 1, b, 2, a + b) 3
padStart 指定された長さに達するまで、提供された文字列を先頭に追加した文字列を返します。 padStart("こんにちは", 8, ".") …こんにちは
padEnd 指定された長さに達するまで、提供された文字列を末尾に追加した文字列を返します。 padEnd("こんにちは", 8, ".") こんにちは…

💡 詳細は、関数チートシート で解説しています。