コンテンツまでスキップ

【Notion】length関数でプロパティの数をカウントする【数式2.0】

はじめに


ネクストモードの南です。

本日はlength関数のユースケースや数式2.0での変更点を紹介していきます。

プロパティの数をカウントする


いきなりですが、プロパティの数をカウントしたい場面ってけっこうあると思います。
例えば投票やアンケートなどでユーザープロパティをカウントしたいケースですね。

これを実現するためには以前の数式だとかなり入り組んだ構文を組む必要がありましたが、
数式2.0ではlength関数を使えばOK、となります。非常にシンプルですね。

  • 例:length関数でユーザープロパティ(投票した人)をカウントする
    length関数でプロパティの数をカウントする
  • 数式プロパティ(投票数
    length(prop("投票した人"))
    プロパティの設定

ボタン機能と組み合わせれば以下のような投票の仕組みを簡単に作ることができます。

ボタンプロパティとlength関数

  • 補足:ボタンについては先日リリースされたボタンプロパティを使ってます。詳細はこちらのブログもご参考ください。

他にもマルチセレクトやリレーションプロパティなど、複数の項目を持つことができるプロパティについては
length関数でプロパティの数をカウントすることができます。


length関数


いったんタイトルの内容は紹介させていただきましたが、ここからはlength関数について数式2.0で
どんな変更があったのかを解説していきます。

length関数は以前の数式でも使うことができましたが、数式2.0からは以下のように仕様が変更されました。

  • length関数
    ・数式1.0:テキストの長さを返します。
    数式2.0:テキストの長さまたはリストの値の長さを返します。
     テキストの例:length("Notion") = 6
     リストの例:length(["a", "abc", "あああ"]) = 3

これは一部のプロパティにおいて仕様の変更があったためとなります。
数式2.0では以下のようにリスト形式のプロパティが登場したため、length関数(といくつかの関数)では
リスト形式のプロパティにも対応できるようになったというわけです。

  • ユーザー、リレーション、ロールアップ、ファイル、マルチセレクトのプロパティ
    ・数式1.0では、これらのプロパティはそれぞれの値をコンマで区切った文字列として返していました。
    ・数式2.0では、これらをリストとして返すようになりました。
     -
    数式2.0: Notion数式の改良点と新機能、および既存環境への影響より

このような変更があったことで冒頭に紹介した通り、length関数でリスト形式のプロパティを値として
持つ場合はリストの数を返す、という挙動をとるようになりました。

ここで、リストの各要素のテキストの長さを求めたいときにはどうするの?という疑問が出てくるかもしれません。
以下のようなケースですね。

  • 例:ユーザープロパティの各ユーザー名の文字数を求めたい
    ユーザープロパティ

このような場合、map関数といったリストを取り扱うことができる関数と組み合わせる必要が出てきます。
例えば上のケースは以下のような形になります。

  • 数式プロパティ
    prop("ユーザー").map(current.name().replaceAll("\s").length())
    replaceAll("\s")とすることで空白を除いた文字数をカウントしている
    各ユーザー名の文字数を求める

上記の構文は一見するとわかりにくいですが、以下の記事でリストの扱い方についての解説をしていますので
こちらもご参考ください。

他にもリストと組み合わせるパターンを紹介します。
なかなか複雑ですが、以前の数式と比べると格段に色んなパターンに対応しやすくなっています。

  • ユーザー名に田中と入っているユーザープロパティの数をカウントする
    prop("ユーザー").filter(current.name().contains("田中")).length()
  • 複数プロパティ(マルチセレクト1、マルチセレクト2)の値の合計数をカウントする
    concat(prop("マルチセレクト1"),prop("マルチセレクト2")).length()

まとめ


今回は小ネタでしたがlength関数について紹介しました。

数式2.0でリスト形式が新たにサポートされたことでデータの扱いやすさが大きく向上しました。
今回はlength関数を取り上げましたが、他の関数でもリストを取り扱えるものがたくさんあり、
より色々なユースケースに対応できるようになっています。
今後も有用なナレッジなどは積極的に紹介させていただきたいと思います。

Notionについてのお問い合わせ

ネクストモード社は、日本で3社しかないNotion販売代理店です。(2023年01月01日現在)
Notion導入を検討の際は是非下記からお問い合わせ頂けますと幸いです。

SaaS_LP