Notionのテーブルで「簡易投票機能」を実現する #notion
データアナリティクス事業本部 サービス・ソリューション部 サービス開発チームのしんやです。
Notionでは「テーブル」の仕組みをデータベースのように扱うことが出来ますが、Notionで提供されている機能を使って「投票システム」のようなことを実現出来ます。Notionでこのトピックに関するドキュメントが公開されていましたので、それを参考に実際にやってみた内容を紹介したいと思います。
目次
投票者数を行毎にカウントする
まずはじめにベースとなるテーブルを作成します。/table
コマンドを使ってインラインテーブルを用意。
こんな感じのテーブルを用意してみました。
起票者的な項目を用意します。Notionテーブルには「作成者」というプロパティがあるので、この列を追加。
名前も任意のものを設定しておきます。
次いで「投票者」に相当する項目を用意します。Notionテーブルには「ユーザー」というプロパティがあるのでこれを選択。
列として追加した後、項目名を任意の値に変更します。ここは公式ドキュメントにあるように「? Upvoted By」としました。
投票者数をカウントするための列を追加します。列の追加で「関数」を選択。
追加した項目を「? Upvotes」という名前に変更。
「? Upvotes」列のセルをクリックし、以下の計算式を入力。
if(empty(prop("? Upvoted By")), 1, length(prop("? Upvoted By")) - length(replaceAll(prop("? Upvoted By"), ",", "")) + 2)
すると以下のように、投票者数の情報が件数としてカウントされるようになりました。投票者数は起票者数+投票者数の合計になっているようです。
項目名を日本語に置き換えてみました。計算対象となる列を修正する事で関数の参照文字列も自動的に修正されているようです。
テーブルの行内容をソートする
Notionのテーブルでは、所定の項目に対して並べ替えを行えます。 前述のデータと合わせて、以下のような形で件数情報(投票数)を"ソートされていない状態"で準備しました。
テーブル右上の三点リーダーメニューから「並べ替え」を選択。
「+並べ替えを追加」を選択。
ここは「投票数」の「降順」を指定してみました。
設定後のテーブル内容を確認してみます。指定通りの並べ替えがされています!
行内容をフィルタリングする
Notionのテーブルでは指定項目のフィルタリングで内容を絞り込む事も出来ます。「ステータス」列を用意し、以下のような複数ステータスを用意、設定してみました。
テーブル右上の三点リーダーメニューから「フィルター」を選択。
「+フィルターを追加する」を選択。
絞り込み条件として任意の内容を指定してみます。内容に合わせてデータ内容も絞り込まれていることが確認出来ました。
まとめ
という訳で、Notionの機能で実現する「簡易投票機能」の紹介でした。
当エントリで紹介した内容はごく基本的な部分に留まりましたが、アイデアや工夫次第では「全員参加の会議」「製品実装機能の優先順位決め」「ユーザーフィードバック」「ブランディングロゴの決定」等多岐にわたって活用が出来るものになっているかと思います。個人的にも色々使えそうなので試してみたいと思います!