1. フォーミュラエディタが改良され、執筆と編集が簡単になりました。2. 大きな変更点3. Formula 2.0 の関数一覧4. Formula 1.0 との非互換部分5. Formula 2.0 への自動コンバート6. Formula 2.0 で追加された関数7. Notion から提供されているオフィシャル情報
1. フォーミュラエディタが改良され、執筆と編集が簡単になりました。
- 複数行編集可能な新しい拡張エディタになりました。
- エディタボックスで直接タイプチェックやハイライトができるようになりました。
- プロパティはこれまで
prop("日付")
のように記述していましたが、エディタ内での選択制になり図のように日付
のように灰色背景で表示されるようになりました。
- キーボードの矢印キー(↑↓)はこのプロパティなどの選択を切り替える機能に割り当たっています。エディタ内で上下移動する場合には、Option/Alt キーを押しながら矢印キー(↑↓)を押してください。

2. 大きな変更点
より多くのユースケースをフォーミュラでサポートするために、製品の改良が行われています。
- 数式がリストをサポートするようになりました。結果として以下の型が利用できるようになりました
型 | 内容 | 対応するプロパティ |
Text | テキスト | Title, Text, Select, Email, URL, Phone number, ID |
Number | 数値 | Number, Rollup (Number) |
Date | 日付・日付範囲 | Date, Created Time, Last Edited Time, Rollup (Date) |
People | 人 | Created by, Last Edited by |
Boolean | true か false | Checkbox |
Page | ページ | ㅤ |
List (array) | 上のものの配列 (異なる型は同居できない) | Multi-Select (List of Text),
Person (List of People),
Relation (List of Page),
Rollup (List of any type) |
- 式が改行したりインデントしたりできるようになりました。また、式中に
/* コメント */
が記載できるようになりました。
- 数式がページ、ブロック、ピープルのリッチデータ出力に対応しました。
- 数式からリレーションの特定のプロパティにアクセスできるようになりました。ほとんどロールアップの必要性がなくなりました。
例:
relation.map(currentValue.number_property).sum()
: リレーション relation
に登録されるているページ群を number_property
の値に変換した上で合計します。- People プロパティでワークスペースレベルの情報(電子メールとフルネーム)にアクセスできるようになりました。
- 関数がメソッド形式でも呼び出せるようになりました。メソッド形式の場合、関数の第一引数に対して呼び出す形になります。
例:
unc(obj, arg1, arg2)
→ obj.func(arg1, arg2)
これによりこれまでのような括弧の対応を探す作業がなくなります。
3. Formula 2.0 の関数一覧
Formula 2.0 の関数一覧は以下の通りです。ページ内に具体的な使い方も書いてあります。
4. Formula 1.0 との非互換部分
現在わかっている Formula 1.0 との非互換部分は以下のとおりです。ただし、多くのものは自動的に変換されます。
- プロパティは
prop("プロパティ名")
のように記述していましたが、リストからの選択制になりました。内部的にはプロパティ ID などが記録されていると思われます。テキストなどにコピーすると以前のようにprop("プロパティ名")
のように書き出され、逆にペーストするとプロパティが選択された状態になります(これはアンバサダーからの強い要望で入りました)。
month
関数はこれまで 0-11 の値が返ってきましたが、わかりにくかったので Formula 2.0 では 1-12 の値が返ってくるようになりました。これまでのスクリプトは自動的にmonth(xxx) - 1
に書き変わります。
day
関数も 0-6 の値が返ってきましたが、1-7 に変更になっています。こちらは日曜日が 0 から 7 に変更になっています。これまでのスクリプトは自動的にday(xxx) % 7
に置き換わります。
slice
関数は文字列の部分文字列を取得する関数でしたが、Formula 2.0 ではリストの部分リストを取得する関数になりました。これまでのslice
の機能はsubstring
となります。これまで作成した Formula は自動的にsubstring
に書き変わります。
start
関数はdateStart
関数に変わりました。これまで作成した Formula は自動的にdateStart
に書き変わります。
end
関数はdateEnd
関数に変わりました。これまで作成した Formula は自動的にdateEnd
に書き変わります。
e
やpi
は定数ではなく関数になりました。e()
やpi()
のように書く必要があります。これまで作成した Formula は自動的にe()
やpi()
に書き変わります。
join
関数がリストを受け付けるようになったため引数の順番が変更になりました(Python 型 → Ruby 型)。
5. Formula 2.0 への自動コンバート
上記変換で変わるものをまとめてみました。当初、add, sub などの演算子のある関数は削除されていたのですが、アンバサダーの要望により後方互換性のために復活しました。Notion としては演算子の方に移行してほしいようで、変換は残ったままです。
6. Formula 2.0 で追加された関数
Formula 2.0 で追加された便利な関数は以下のとおりです。
- parseDate : 文字列から日付を作成できます。これまで
dateAdd
やdateSubtract
関数で無理やり作成していた日付関係の作成系の小細工は必要なくなりました。
- let, lets : 計算した値を変数として一時保持できます。以下のフォーミュラは values で与えられた数値リストを並び替えて、最大値と最小値を取り除いたものを
mid
という変数に一時保存しています。その後、そのリストの合計と個数を計算して割り算することで、最大・最小を取り除いた平均 (オリンピックなどの採点競技などでよく使われる中央だけの平均値)を計算できます。
- ifs : Excel の中にある同名の関数と同じで複数の条件に対して対応する値を返します。
- sort : リストを並び替えた新しいリストを返却します。
- reverse : リストの順序を逆順にした新しいリストを返します。
- unique : リストの重複項目を取り除いたユニークな値だけを持つリストを返します。
- map : リストの各項目に対して、与えられた処理を実施した新しいリストを返します。
- filter : リストの中から条件を満足するものだけを抽出したリストを返します。
- find :
filter
と同様ですが最初の一つの要素を返します。
- findIndex :
filter
と同様ですが最初の一つの要素の位置を返します。
- at : リストの指定した位置の値を返します。
- repeat : 文字列を任意回数繰り返せるようになりました。以前よく使われていたプログレスバーは substring (旧 slice) を駆使していましたが、これを使うと簡単に記述できそうです。
- week : ISO の月曜始まりの週数を返します。以前は
toNumber(formatDate(prop("date"), "W"))
のようにしていたものです。日曜始まりの場合は、これまで通り"w"
を使って導出してください。
- dateRange : 日付範囲を作成します。いよいよ Formula で終了時間が設定できるようになりました。
- split : 文字列を区切り文字で区切ったリストを返します。
- match : 文字列にマッチしたものがリストとして返ります。
- link : リンク文字列を設定できます。