数式の構成要素
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 |
| ユーザーのメールアドレスを返します。 | 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, ".") |
こんにちは… |
💡 詳細は、関数チートシート で解説しています。