データ型
7つのデータ型
Notionの数式は、7つのデータ型を扱うことができます。
| データ型 | 例 |
|---|---|
| 文字列 | “数式をマスターしよう!” |
| 数値 | 1, -2.5 |
| 日付 | “2024-11-11T12:00:00Z” |
| ユーザー | 🙋 とうまろ |
| 真偽値 | true, false |
| ページ | 📄 日記 |
| リスト | [”1月”, “2月”, “3月”] |
文字列
文字列型は、テキストコンテンツを保持および表示します。 文字列はほぼすべての文字を保持できます。
"モンキー D ルフィ"
"42"
"true"
join 関数や add 関数、+ を使って文字を連結することができます。
"本日の天気は" + "晴れ" + "になるでしょう"
/* 出力: 本日の天気は晴れになるでしょう */
join(["本日の天気は", "晴れ", "になるでしょう"], " ")
/* 出力: 本日の天気は 晴れ になるでしょう */
文字列に対して計算を実行することはできません。 Notionは文字列から数値への変換を行わないため、文字列を手動で数値に変換する必要があります。
文字列に数字のみが含まれている場合は、toNumber 関数を使用して変換できます。
/* これはエラーになります */
add(2, "2")
/* 文字列を数値に変換して計算 */
add(2, toNumber("2"))
特殊文字のエスケープ
文字列内に含まれている特殊文字を表示するには、エスケープ文字(\)を使用します。
例えば、ダブルクォーテーション(")を文字列内に表示したい場合は、次のように記述します。
"これは\"引用\"された文字列です" /* 出力: これは"引用"された文字列です */
同様に、バックスラッシュ自体を表示したい場合は、次のようにします。
"これはバックスラッシュです: \\" /* 出力: これはバックスラッシュです: \ */
数値
数値型は、加算や除算などの算術演算子と組み合わせて、数学的な演算や計算を実行できます。
2 + 2 /* 出力: 4 */
6 / 2 /* 出力: 3 */
演算は標準的な計算順序に従います。
3 + 4 * 5 /* 出力: 23 */
(3 + 4) * 5 /* 出力: 35 */
数値から文字列への自動変換
数値は、他のデータ型の組み合わせると自動的に文字列に変換されます。
"参加者は" + prop("メンバー").length() + "人です。" /* 出力: "参加者は12人です。" */
["参加者は", prop("メンバー"),"人です。"].join("") /* 出力: "参加者は12人です。" */
日付
Notionの数式は、特殊なデータ型である日付オブジェクトを出力できます。
これらは、dateAdd や dateSubtract などの日付関数を使用して操作できるため、文字列とは異なります。
内部的には、日付オブジェクトは3つの要素で構成されています。
💡 日付オブジェクトを構成する3つの要素
- 開始日
- 終了日(オプション)
- タイムゾーン
次のNotionプロパティは日付オブジェクトを出力します。
- 日付
- 作成日時
- 最終更新日時
- ロールアップ(日付オブジェクトを出力するプロパティをロールアップするように設定されており、「オリジナルを表示する」に設定されていない場合)
- 数式(数式が日付オブジェクトを出力する場合)
数式内では、次の関数が単一の日付オブジェクトを出力します。
| 関数 | 例 | 出力 |
| now | now() |
2024年11月23日 15:00 |
| fromTimestamp | fromTimestamp(1656012840000) |
2022年6月24日 4:34 |
| dateAdd | dateAdd(now(),3,"months") |
2025年2月23日 15:00 |
| dateSubtract | dateSubtract(now(),3,"months") |
2024年8月23日 15:00 |
| dateRange | dateRange(now(), prop("Date")) |
2024年11月23日 15:40 → 2024年11月30日 23:59 |
| parseDate | parseDate("2025-01-01") |
2025年1月1日 |
ユーザー
ユーザー型は、ユーザー、作成者、最終更新者プロパティなどで使用されます。このデータ型は、ワークスペース内の特定のユーザーを参照することができ、メンション機能と組み合わせることで効果的なコラボレーションが可能になります。また、フィルターやソートの条件としても活用できます。
name(prop("作成者")) /* 出力: "とうまろ" */
email(prop("作成者")) /* 出力: "toumaro@xxxyyyzzz.com" */
上記のように name や mail を直接指定すると、単一の作成者や最終更新者、メールアドレスを出力します。
ユーザープロパティに対してこれらの関数を使用する場合は、first を使用して最初の項目を対象とするか、map を使用してフィールドに追加された各ユーザーの名前またはメールアドレスを返す必要があります。
prop("担当者").first().email() /* 出力: "toumaro@xxxyyyzzz.com" */
prop("担当者").map(current.email()) /* 出力: ["toumaro@xxxyyyzzz.com", "taro-yamada@xxxyyyzzz.com" */
💡 メールアドレスをクリック可能にするには
link関数を使うメールアドレスは文字列で返されます。クリック可能にするには
link関数でハイパーリンクを生成し、mailTo:を先頭に付けます。link("メールを送信", "mailTo:" + email(prop("作成者"))) /* クリックするとメーラーが起動します */
真偽値
真偽値は、trueまたはfalseの値を返します。
チェックボックスでは、チェックされている場合はtrue、チェックされていない場合はfalseとなります。
10 > 5 /* 出力: True */
"東京" == "大阪" /* 出力: False */
論理演算子
論理演算子は、真偽値を返し、複数の式を組み合わせて評価することができます。
| 論理 | シンボル | 関数 | 例 |
|---|---|---|---|
| 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 |
ページ
ページ型は、データベースやページへの参照を保持するデータ型です。データベースのリレーション機能で使用され、ページ間のリンクを確立することができます。
また、ページIDを使用して特定のページの情報にアクセスすることも可能です。
/* ページが持つデフォルトの情報群 */
prop("作成者") /* 出力: "🙋 とうまろ" */
prop("作成日時") /* 出力: 2024年11月23日 15:00 */
prop("最終更新者") /* 出力: "🙋 とうまろ" */
prop("最終更新日時") /* 出力: 2024年11月23日 15:00 */
/* リレーションで他のページの情報を取得する */
prop("リレーション").first().prop("作成者") /* 出力: "🙋 とうまろ" */
prop("リレーション").map(current.prop("作成日時")) /* 出力: ["2024年11月23日 15:00", "2024年11月23日 16:00"] */
/* ページIDを取得する */
prop("リレーション").first().id() /* 出力: "6f65542cde7b4c548155474684281d15" */
prop("リレーション").map(current.id()) /* 出力: ["6f65542cde7b4c548155474684281d15", "781a4fd8e8f243828872c6a5b21d7d0c"] */
リスト
リスト型は、複数の値を順序付きで格納できるデータ型です。配列とも呼ばれ、文字列、数値、日付など、異なる型の要素を含むことができます。
["りんご", "オレンジ", "ぶどう"]
[1, 2, 3]
[true, false, false]
[now(), prop("日付")]
[["りんご", "グリーンアップル"], ["オレンジ", "みかん"]]
リストの要素は0から始まるインデックスでアクセスでき、様々な関数を使用して要素の追加、削除、検索などの操作が可能です。
["りんご", 1, true, now(), ["オレンジ", "ぶどう"]]
["りんご", 1, true, now(), ["オレンジ", "ぶどう"]].at(0) /* 出力: "りんご" */
["りんご", 1, true, now(), ["オレンジ", "ぶどう"]].at(1) /* 出力: 1 */
["りんご", 1, true, now(), ["オレンジ", "ぶどう"]].at(2) /* 出力: true */
["りんご", 1, true, now(), ["オレンジ", "ぶどう"]].at(3) /* 出力: 2024年11月23日 15:00 */
["りんご", 1, true, now(), ["オレンジ", "ぶどう"]].at(4) /* 出力: ["オレンジ", "ぶどう"] */
リストを扱う関数
- at
- first
- last
- slice
- concat
- sort
- reverse
- join
- split
- unique
- includes
- find
- findIndex
- filter
- some
- every
- map
- flat
リストの組み込み変数
- current
- index
map 関数を使用する場合、リスト項目の値とインデックスをそれぞれ current と index を使用してアクセスできます。
["りんご", "オレンジ", "ぶどう", "いちご"].map(
current
+ "はリストの"
+ (index + 1)
+ "番目の果物です"
)
/* 出力:
りんごはリストの1番目の果物です,
オレンジはリストの2番目の果物です,
ぶどうはリストの3番目の果物です,
いちごはリストの4番目の果物です */