Notionの関数で英語word数をカウントする

Notionのデータベーステーブルでは、エクセルのように関数をいれて色々できる。

これを使って、文字数やword数をカウントしたい。

単純な文字数は、以下でカウントできる。※”TEXT”はカウントしたいプロパティ列名

length(TEXT)

これが英文などで「word数のカウント」をしたい場合だと一工夫いるようだ。

例えば、

“My name is Taro” = 4

“Hello, world” = 2

などとしたいとき。

結論的には、以下を関数フィールドに入力するとできる。※”TEXT”はカウントしたいプロパティ列名

if(length(TEXT) > 0, length(replaceAll(replaceAll(replaceAll(TEXT, " +$", ""), " +", " "), "[^ ]", ""))+1, 0)

何をやっているかというと、基本的には”スペース”以外の文字を消して、スペースの数を数えている。

wordとwordの間にはスペースがあるので、このスペースを数えればword数がわかるという仕組み。

その際に、不必要に入ってしまっている余計なスペースを消したり、文頭のword(スペースがない)分を足したりと、以下を順番にやっている。

replaceAll(TEXT, " +$", "")  // 文末にスペースがはいってしまっていたら削除
replaceAll(TEXT, " +", " ")  // スペースが2つ以上続いてしまっていたら1つにする
replaceAll(TEXT, "[^ ]", "") // スペース以外を削除
length(TEXT)+1  // 残されたスペースの文字数をカウントして、文頭の1単語分を足す。
if(length(TEXT) > 0, length(TEXT)+1, 0)  // セルに何も入力されていなかったら0にする。

ここでカバーできていないイレギュラーなケースがあった場合も、条件を追加して対応していくと精度をあげることができる。

以上。