Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the all-in-one-seo-pack domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/yuki/argontown/wordpress/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wpforms-lite domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/yuki/argontown/wordpress/wp-includes/functions.php on line 6114

Notice: 関数 _load_textdomain_just_in_time が誤って呼び出されました。cocoon ドメインの翻訳の読み込みが早すぎました。これは通常、プラグインまたはテーマの一部のコードが早すぎるタイミングで実行されていることを示しています。翻訳は init アクション以降で読み込む必要があります。 詳しくは WordPress のデバッグをご覧ください。 (このメッセージはバージョン 6.7.0 で追加されました) in /home/yuki/argontown/wordpress/wp-includes/functions.php on line 6114
Notionの関数で英語word数をカウントする - Argon Town Blog

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にする。

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

以上。