format: Notion Formula 解説 (5)

はじめに

Notion Formula の第5回目ではその他の型をテキストに変換する format メソッドを確認します。すでに逆引き Formula のページに関数説明があるので、このページを見ながら解説していきます。

format

文法

説明には「文字列としてフォーマットされた値を返します。」とあります。使い方は以下のようになります。

prop("value").format()

Formula 1.0 までは非常に大活躍した関数でした。なぜならば数値と文字列を加算することができなかったため、以下のような表記が必要でした。

format(1) + "月"

Formula 2.0 では異なる型同士の演算なども許可されるようになり、上記の表記は以下のように format なしで記述できるようになりました。このため format の出番はほとんどなくなってしまいました。現在はこれまでのフォーミュラの互換性のために残っているような形になっています。

1 + "月"

数値型からテキストへの変換

結果は以下のようになります。

数値からテキスト

日付からテキストへの変換

日付は言語で指定されたフォーマットでテキストに変換されます。

日付からテキスト

チェックボックスからテキストへの変換

チェックボックスは true または false というテキストに変換されます。

チェックボックスからテキスト

逆引きでの使用例: 小数点以下○桁で丸めるには?

format の使い道ですが、逆引き Formula で一つだけ使用例がありました。

小数点以下○桁で丸めるには?

この中で以下のような数式を記述しています。 1.00 のように最後の 00 を表示するために使っていました。

/* 丸め数字 + 0.001 を計算 */
(((prop("オリジナル数値") * 100).round() / 100) + 0.001)
 /* 文字列に変換 */
 .format()
 /* 最後の一文字を削除 */
 .replace(".$", "")

丸め

同様に以下のように記述するとゼロ埋め文字列を作成することができます。具体的には桁数よりも大きい数字を加算した上で、下位8桁を切り抜くことで0埋め文字列に変換します。

/* 桁数よりも大きい数値を加算 */
(100000000 + prop("数値"))
  /* 文字列に変換 */
  .format()
  /* 最後の 8 文字を取得 */
  .replace(".*(.{8})$", "$1")

ゼロ埋め

ただ、今確認したところ、この format() は省略可能でした。数値を文字列関数に入れると自動的に format() が呼ばれるようになっているようです。もう明示的に format() を Formula から予備必要はなさそうです。

/* 桁数よりも大きい数値を加算 */
(100000000 + prop("数値"))
  /* 最後の 8 文字を取得 */
  .replace(".*(.{8})$", "$1")

おわりに

Formula 2.0 からは format は明示的に書く必要がない関数になってしまったようです。