Hi~ 我是 Linmi,Notion Pro,距离上一次更新已经很久了,这段期间疫情让人恐慌、担忧,希望能快点好起来。当然疫情这段时间也没闲着,调研了不少 SaaS 产品,接下来我会把这些 SaaS 产品的特性一一在 Notion 上实现,供大家参考。

本篇内容是团建模板的一个子模块,很多小伙伴在群里说不懂如何使用 Formula,做个拆分,方便大家学习理解 Notion Formula 。

友情提醒:专业工具还是专业工具强,Notion 教学内容仅供学习参考,未知因素我目前没有对应的环境测试,可能会带来一些未知问题。

效果演示

使用 Notion 制作一个简易的投票系统-Linmi

如动图所示:通过选择人,来展示对应的票数。

拆解

组织 Database

  1. 通过 /table 来快速新建一个表格样式的的 Database;
  2. 分别创建:活动(Name)、预算(Number)、投票(People)、票数(Formula) 四个属性

这样一个简单的 Database 就组织完成。

思考

Notion 中的 Formula 并未提供一个方法直接获取对应属性栏的值。要不挨个函数试试?哈哈,不了不了。

首先我们先把投票(People)打印出来,看看输出效果。

使用 Notion 制作一个简易的投票系统-Linmi

票数(Formula)属性里,我们输入下方代码:

prop("投票")

这样我们在属性里就得到这样的结果:

选择四人时结果:Linmi , Linmi ​, linmi , yilong
选择三人时结果:Linmi , Linmi ​, yilong
选择两人时结果:Linmi , Linmi
选择一人时结果:Linmi

好像能看出什么特征,三个名字里面都有一个 l,抽出 l,不就统计出数目了么?上面的例子其实有问题,如果是中文名字呢?特征就没了。

那继续,发现 , 在每个输出的结果中都存在,选择四人时,有三个 , ,选择三人时,有两个 , ,我们拿到 , 加一就得到人数。

那有什么函数能获取到 ,replaceAll() 是一个。

replaceAll() 是什么?

Notion 中 replaceAll() 是用于批量替换的一个函数,介绍如下:

使用 Notion 制作一个简易的投票系统-Linmi

看不懂?我们重点看看示例:

replaceAll("1-2-3", "-", "!") == "1!2!3"

上面这个示例就是简单的 replaceAll()使用,使用 ! 替换 1-2-3 中的 - ,最后生成结果1!2!3

上面的1-2-3可以替换为任意属性,比如我新建的投票(People)属性。

replaceAll(prop("投票"), "-", "!")

我们把 - 替换为 , 看看:

replaceAll(prop("投票"), ",", "!")
使用 Notion 制作一个简易的投票系统-Linmi

嘿,, 被替换为 ! 了,这是正着选,那能不能反选呢?

正则是提供了反选的方法:[^abc],关于正则的用法,有兴趣可以点击JavaScript RegExp [^abc] Expression 学习。

这里我们直接对上面的代码改进:

replaceAll(prop("投票"), "[^,]", "!")

输出结果:

选择三人时结果:!!!!!!,!!!!!!!!,!!!!!!!
选择两人时结果:!!!!!!,!!!!!!!
选择一人时结果:!!!!!!

这次我们讲名字全部替换了,不过还是不是我们想要的结果,我们想要只有 , 的结果。

把 ! 换成空字符看看:

replaceAll(prop("投票"), "[^,]", "")
使用 Notion 制作一个简易的投票系统-Linmi

🙆,我们成功获取到了 ,, 接下来就是如何计算个数。

获取人数

Notion 内置了一个函数,length(),用于计算属性的长度。

使用 Notion 制作一个简易的投票系统-Linmi

用法很简单,直接把上面的代码放在 length() 即可。

length(replaceAll(prop("投票"), "[^,]", ""))
使用 Notion 制作一个简易的投票系统-Linmi

这样我们拿到 , 的数据,不过与具体的数值还差 1 ,我们在后面加个 1:

length(replaceAll(prop("投票"), "[^,]", "")) + 1
使用 Notion 制作一个简易的投票系统-Linmi

最终结果

考虑到我们新建的一些属性没人填写,Formula 属性里会显 1 ,着实有碍观瞻。

使用 Notion 制作一个简易的投票系统-Linmi

加入 IF 判断,得到:

if(empty(prop("投票")), "❤️请投票吧", format(length(replaceAll(prop("投票"), "[^,]", "")) + 1))
使用 Notion 制作一个简易的投票系统-Linmi

补充

关于 IF 使用可以参考我的其他文章:如何打造个性化 Notion 进度条?

模板

获取团建方案投票模板 → notion.so

总结

回顾一下,这种投票方式远不如一些专业投票工具便捷,每次创建新的 Database,还需要手写代码,挺麻烦。

但是,折腾也是爱❤️。

最后,试着想想,继续往下拓展场景,HR 可以用来统计团队各个尺寸 T 恤的数目,团队统计功能的优先级等等。

加入 Notion 中文社区社群,与 Notion 的小伙伴们一起探索更多效率可能。

福利

点赞超过 100 ,我就直播解析本文。直播地址 → https://live.bilibili.com/1330272

感谢阅读,请评分鼓励一下我!

感谢评价,欢迎关注我的 Twitter 哦。