notionで社内限定のぐるなびみたいなのが作りたい!!!!
こんにちは。トイです。
岡山県にある小さなHR会社でデザイナーでインターンしてます。
弊社では、notionをフル活用して社内の情報を管理していますが、最近新たに欲しいページを思いつきました。
「社内メンバーでおすすめの飲食店の情報を共有したい!!!!」
東京のとある会社さんにインターンした時に、おすすめランチまとめみたいなドキュメントがあって、見てるだけで楽しかったのを覚えてて、うちでも欲しいなってなりました。まあ、ランチにいく時とか困ってるのでね、、、
そこで、社内のslackで投げてみると、共感してくれる人もいました。(2人/15人)
最初は誰か作って!て感じでしたが、僕が作ってもいいかなと思い始めたので作っていくことにします。
最後にテンプレ公開もしているので、よければ使ってみてください。
とりあえず作る。
お店に行く時に参考にする項目を適当に出していきます。
例えば、ランチで利用したいのか、夜に行きたいのか。
魚系がいいのか、肉がいいのか、中華がいいのか。
また、弊社では喫煙者がいるので、タバコが吸えるのかどうか
などの一目で確認したい情報を並べていきます。
下のような感じで作ってみました。記入箇所はなるべく少なくしています。(後々足りないことに気づきます。)
料理のビジュアルで決めたい人が多いなら写真が見れるギャラリービューにしてもいいかもしれません。
シチュエーションでソートをかけたい!
お店に行く時は様々なシチュエーションが考えられます。
ランチにいきたい場合にはディナーの項目は見たくない!みたいな
ということで、左側にショートカットを付け足してあげましょう。
おすすめ度を平均で出してみる
ここから関数の説明を長ったらしくしますが、最後にテンプレおいているので「関数なんて書かないぜ!」て方は流し見で大丈夫です( ˇωˇ )
ここまできて、そういやおすすめ度の表示ねえじゃんってなりまして、どうせならメンバーのおすすめ度平均直から出せばいいのでは?と思いました。
結論、フォーミュラを使えばできますが、めんどくさい&今後人数が増えるとその度にプロパティを加える必要があるので、大人数の場合おすすめはしません。
一応少人数だと使えるし、おすすめ度に主観が入りにくくなるということで今回やってみます。
①おすすめ度を選ぶプロパティの追加
まず、プロパティにメンバー分のおすすめ度を入力できる欄を追加します。今回はA君、B君、C君の3人として、おすすめ度の表記は★の数五段階で表すことにしました。
②★を数値に変換
次に星の数を数値に変換して計算できるようにします。
これはlength関数を使えば可能です。
「Aおすすめ」の★を数字に変換するのであれば、
length(prop("Aおすすめ"))
これでできます。
仕組みとしては、length関数は文字の長さを数字にして表すので「★★★★★」の時は5、「★」の時は1と出力してくれます。
③全員の平均を出す
これは先程の全員分の★を数字に変換して、母数で割れば完了です。
僕は小数点第一まで出したかったので、一度10倍して、平均を出した後に10で割ってます。
round((length(prop("Aおすすめ")) + length(prop("Bおすすめ")) + length(prop("Cおすすめ"))) / 3 * 10) / 10
ここで勘の鋭い方なら、分母が固定なら全員がおすすめ度を入力しないとおかしくなることにお気づきでしょう、、、、僕は作った後に気づきました、、、、orz
ということで、分母をおすすめ度を入力した人の数にしないといけません。
これはif関数を使っていきます。(他にあるかも)
if関数についてはこの方の記事が世界一わかりやすいので構造から理解したい方は是非!!!!
この場合は、各おすすめ度の数値が数字が0より大きい(おすすめ度が入力されていると同義)であれば1を出力し、その合計数を分母とします。
一人分の出力だと
toNumber(if(length(prop("Aおすすめ")) > 0, "1", ""))
上の関数を人数分作って足せばいいので、
toNumber(if(length(prop("Aおすすめ")) > 0, "1", "")) + toNumber(if(length(prop("Bおすすめ")) > 0, "1", "")) + toNumber(if(length(prop("Cおすすめ")) > 0, "1", ""))
これを先程の平均を出した関数の分母に代入すればいいので、
round((length(prop("Aおすすめ")) + length(prop("Bおすすめ")) + length(prop("Cおすすめ"))) / prop("分母") * 10) / 10
2番目のプロパティの「Bおすすめ」に何も入れてない場合でも、平均値が合っているので成功ですね!
ついでに★をプログレスバー形式で出してあげる。
上のような感じでおすすめ度の平均値を★でも出力します!
これはslice関数を使います。
また、星の数が繰り上がらないようにround関数ではなく、floor関数を使っています。
slice("★★★★★", 0, floor(prop("平均"))) + slice("☆☆☆☆☆", 0, 5 - floor(prop("平均"))) + " " + format(round(prop("平均") * 10) / 10)
「分母」と「平均」「おすすめ度」のプロパティはまとめることができますが、分母を変えるだけで他も変わることと、まとめると見にくくなるのでそのままにしておきます。
完成!
完成したものがこちら!
普通に長くなりましたが、これで完成です。これを社内で流行らせます。
テンプレはこちら!
この記事が気に入ったらサポートをしてみませんか?