Hi~ 我是 Linmi,Notion Pro,距离上一次更新已经很久了,这段期间疫情让人恐慌、担忧,希望能快点好起来。当然疫情这段时间也没闲着,调研了不少 SaaS 产品,接下来我会把这些 SaaS 产品的特性一一在 Notion 上实现,供大家参考。
本篇内容是团建模板的一个子模块,很多小伙伴在群里说不懂如何使用 Formula,做个拆分,方便大家学习理解 Notion Formula 。
友情提醒:专业工具还是专业工具强,Notion 教学内容仅供学习参考,未知因素我目前没有对应的环境测试,可能会带来一些未知问题。
效果演示
如动图所示:通过选择人,来展示对应的票数。
拆解
组织 Database
- 通过
/table
来快速新建一个表格样式的的 Database; - 分别创建:活动(Name)、预算(Number)、投票(People)、票数(Formula) 四个属性
这样一个简单的 Database 就组织完成。
思考
Notion 中的 Formula 并未提供一个方法直接获取对应属性栏的值。要不挨个函数试试?哈哈,不了不了。
首先我们先把投票(People)
打印出来,看看输出效果。
在票数(Formula)
属性里,我们输入下方代码:
prop("投票")
这样我们在属性里就得到这样的结果:
选择四人时结果:Linmi , Linmi , linmi , yilong
选择三人时结果:Linmi , Linmi , yilong
选择两人时结果:Linmi , Linmi
选择一人时结果:Linmi
好像能看出什么特征,三个名字里面都有一个 l
,抽出 l
,不就统计出数目了么?上面的例子其实有问题,如果是中文名字呢?特征就没了。
那继续,发现 ,
在每个输出的结果中都存在,选择四人时,有三个 ,
,选择三人时,有两个 ,
,我们拿到 ,
加一就得到人数。
那有什么函数能获取到 ,
,replaceAll()
是一个。
replaceAll() 是什么?
Notion 中 replaceAll()
是用于批量替换的一个函数,介绍如下:
看不懂?我们重点看看示例:
replaceAll("1-2-3", "-", "!") == "1!2!3"
上面这个示例就是简单的 replaceAll()
使用,使用 !
替换 1-2-3
中的 -
,最后生成结果1!2!3
。
上面的1-2-3
可以替换为任意属性,比如我新建的投票(People)
属性。
replaceAll(prop("投票"), "-", "!")
我们把 -
替换为 ,
看看:
replaceAll(prop("投票"), ",", "!")
嘿,,
被替换为 !
了,这是正着选,那能不能反选呢?
正则是提供了反选的方法:[^abc]
,关于正则的用法,有兴趣可以点击JavaScript RegExp [^abc] Expression 学习。
这里我们直接对上面的代码改进:
replaceAll(prop("投票"), "[^,]", "!")
输出结果:
选择三人时结果:!!!!!!,!!!!!!!!,!!!!!!!
选择两人时结果:!!!!!!,!!!!!!!
选择一人时结果:!!!!!!
这次我们讲名字全部替换了,不过还是不是我们想要的结果,我们想要只有 ,
的结果。
把 ! 换成空字符看看:
replaceAll(prop("投票"), "[^,]", "")
?,我们成功获取到了 ,
, 接下来就是如何计算个数。
获取人数
Notion 内置了一个函数,length(),用于计算属性的长度。
用法很简单,直接把上面的代码放在 length() 即可。
length(replaceAll(prop("投票"), "[^,]", ""))
这样我们拿到 ,
的数据,不过与具体的数值还差 1 ,我们在后面加个 1:
length(replaceAll(prop("投票"), "[^,]", "")) + 1
最终结果
考虑到我们新建的一些属性没人填写,
,Formula 属性里会显 1 ,着实有碍观瞻。
加入 IF 判断,得到:
if(empty(prop("投票")), "❤️请投票吧", format(length(replaceAll(prop("投票"), "[^,]", "")) + 1))
补充
关于 IF 使用可以参考我的其他文章:如何打造个性化 Notion 进度条?
模板
获取团建方案投票模板 → notion.so
总结
回顾一下,这种投票方式远不如一些专业投票工具便捷,每次创建新的 Database,还需要手写代码,挺麻烦。
但是,折腾也是爱❤️。
最后,试着想想,继续往下拓展场景,HR 可以用来统计团队各个尺寸 T 恤的数目,团队统计功能的优先级等等。
加入 Notion 中文社区社群,与 Notion 的小伙伴们一起探索更多效率可能。
福利
点赞超过 100 ,我就直播解析本文。直播地址 → https://live.bilibili.com/1330272
求模板~~~“你无权访问Linmi。请与管理员联系以将你添加为成员。”
鸡肋
有点累
说实话实用性不如QQ群投票
是的,这个是拆分的场景,结合团建来比较方便。
昨天在社区的「意见反馈」中看到了这个统计公式,干瞅了半天不知道 [^,] 啥意思。原来是正则表达式,惭愧惭愧。
看到群里那个给notion取名的投票系统了,但是可以冒充他人投票啊,这样数据就不准了。
这个是团队内使用的,这种强信任关系下是适用的。
能问一下你的博客是用什么搭建的吗?
WordPress 搭建的。