Notionのロールアップした値を計算するときTips
こんにちは、のびすけです。
前にNotionのメモを書きましたが、今回もそんな感じのメモです。
1. ロールアップを用いた場合のif
プロトアウトスタジオの宿題では主に2パターンの宿題があり、”実装付き企画”と”最終制作企画”に大別できます。
宿題の採点が行われますが
- 宿題のDB
- 採点のDB
で分けて管理しています。
採点時に採点担当が担当した宿題がどちらのパターンなのかによって合計点数を算出したいですが、if文を普通に使うとうまくいきませんでした。
※Notion内での通常のif文
こんな感じ
ロールアップの場合はconteins()を使う
ChatGPTに教えてもらいましたが、ロールアップの場合は と書いてもうまくいかないらしく を利用するのが良いみたいです。
今回は宿題DBから採点DBにロールアップで取ってきている値を使っていたのでうまくいかなかった模様です。
これで最終制作企画の宿題の時の合計を出しつつ、そうじゃない場合は0にするなどハンドリングができました。
こんな感じ
2. ロールアップされた値の足し算
次に、ロールアップされた値の計算です。
採点した人の点数が3,4と表示されています。3+4=7をFB担当者採点小計に入れたいです。
と はロールアップになっているのでそのまま足し算すると、以下のようになってしまいます。0,0,3,4て……
+ の結果
sum()を使う
sum( )+ sum( )という形式にするとうまく計算できました。
仕様はイマイチわかってないですが、sum()関数を挟むことで計算しつつ、数値として変換してくれる模様です。
ちなみにsum( + )だとダメみたいですね。
sum()を使っているけど同じやり方で別の四則演算もいける気はします。
別解: mapでリレーションから直で取る。ロールアップ不使用。
ちゃんと仕様理解してないけど、mapとcurrentを使うことで値を取得できました。
mapを使うことで って書いてる部分はリレーションプロパティとなっていて、別のDB(採点DB)を参照しています。
ちゃんと理解してないけどおそらく挙動的に”.map(current. )”みたいな書き方をすることでロールアッププロパティを使わずに直接計算もできそうでした。
今まで一度ロールアッププロパティに一旦値を置いてから計算してたのでめちゃ便利。。
結果はロールアッププロパティをsum()した時と同じですね。