查看原文
其他

这个需求很简单,明天上线没问题吧?要不要怼回去?

程序猿DD 2020-10-16
点击上方蓝色“程序猿DD”,选择“设为星标”
回复“资源”获取独家整理的学习资料!
不知道你是否遇到过这样的场景:业务突然说要赶制个活动,先做一波预热的问卷调查。为了促进参与调查的积极性,公司会提供一波重量级礼品赞助,在完成调查之后,在参与调查的人中进行抽奖。需求很简单,明天上线没问题吧?!
听到“明天上线”字眼的你是不是第一反应就是:怼回去!
是的,虽然看似简单的需求,还是涵盖了后端+前端的完整开发内容。真正做起来,一天时间要投入到线上运作,还是有比较大风险的。但是先别急着怼回去,对于这种数据类需求,其实现场工具也有很多。如果这个业务需求还挺重要的,换一个思路思考,如何低成本的去实现它,才是一名高级开发人员的正确思考过程。
下面以此场景为例,看看我们可以如何去快速的解决掉这个“明天就要上线”的紧急需求!

表单数据的收集

首先,说到问卷调查那就必须会涉及到表单的开发,实际上现在有很多表单类的SaaS服务是可以供我们使用的。但是考虑到后续还要做抽奖等内容,那我们需要选取一个功能强大一些,最好可以自定义计算脚本的SaaS服务。这里推荐一个不错的在线协同表格和信息管理工具:SeaTable。它是一款新型的在线协同表格和信息管理工具。它支持“文件”、“图片”、“单选”、“协作人”、“公式”等丰富的数据类型。我们可以用它来方便的组织和管理各类信息。同时,它也是一个很好用的轻型数据库,并自带了非常精美的 UI。
下面,我们就来介绍如何通过一个简单的脚本从参与问卷调查的用户中抽出几个中奖用户。这样我们就完成了一个从数据收集到数据处理的完整的小型应用。
总体步骤如下:
1.创建表格并设置问题
我们创建一个「用户调查问卷」表,在表里增加列并命名列,列的名称就是问题名称。同时为每列选择一个合适的数据类型。比如:
  • 姓名列,用了文本类型。填写人可自定义输入姓名、昵称等。
  • 行业列,用了单选类型来标记行业。在表单上点击就可以直接选择一个单选项。
  • 处理任务列,用了多选类型。填写人可选择一个或多个。
  • 建议或意见列,用了长文本类型。在表单上点击该项,就能输入大段内容。
2.创建表单
在表格上设置好问题后,点击右上角的「表单」,就可以创建一个表单。创建表单后,就可以进入设置表单。比如:隐藏填写项、设置必填项、增加填写说明、设置访问权限等。表单设置如下图:

完成设置后,点击共享按钮,就可以把表单的链接或二维码,发送给问卷参与人员。他们进入表单后,填写并提交的数据,就会实时自动汇总到「用户调查问卷」表格里。这时,我们通过表单就完成了数据的自动收集。表单数据汇总至表格,如下图:(部分数据做了删减和隐藏)

用脚本功能来抽取中奖用户

通过表单完成问卷数据收集后,我们需要从参与用户中,随机抽取5名用户作为中奖用户。这就可以通过脚本功能来实现。步骤如下:
1.增加脚本并命名
首先,在表格上增加一个子表「中奖用户」,用来记录脚本抽取的中奖用户。然后点击表格右上角的「脚本」,新增一个脚本,给它命名为“抽奖脚本”。
如下图:

2.写入抽奖脚本代码并运行
我们需要在「问卷调查记录」表的默认视图中,从“姓名”列随机抽取5名用户,然后生成在「中奖用户」表里的“姓名”列,那么代码如下:
const winningTableName = '中奖用户';
const winningColumnName = '姓名';
const alternativeTableName = '问卷调查记录';
const alternativeViewName = '默认视图';
const alternativeColumnName = '您的姓名?';
const winningCount = 5;
const table = base.getTableByName(alternativeTableName);
const view = base.getViewByName(table, alternativeViewName);
const rows = base.getRows(table, view);
const winningTable = base.getTableByName(winningTableName);
for (let i = 0; i < winningCount; i++) {
let index = Math.floor(Math.random() * rows.length);
selectedRow = rows[index];
const selectedUser = selectedRow[alternativeColumnName];
rows.splice(index, 1);
base.addRow(winningTable, {[winningColumnName]: selectedUser});
}
输入代码后,如下图:

点击上图中的“运行脚本”后,随机抽取的5名中奖用户就出现在了「中奖用户」表里的“姓名”列里。这时我们通过脚本功能就完成了抽取中奖用户的操作了。
如下图:

总结

在这个案例中,通过 SeaTable 的表单,我们完成了问卷调查数据的快速收集和自动汇总。通过增加一个抽奖脚本,我们快速实现了从参与用户中随机抽取几名中奖用户的需求,这样我们就完成了一个从数据收集到数据处理的完整的小型应用。SeaTable 表格本身具有很强的灵活性和可扩展性,借助包括脚本在内的一些功能,我们就可以方便又快速的实现数据处理小应用。所以,当我们在实际开发过程中,不一定什么都要做走正规的瀑布流程去完成复杂的开发纳入我们的主体信息系统。对于一些非长期使用、临时紧急的需求,完全可以依靠一些外部手段,快速的搭建出一个简易的解决方案来实现业务需求,即达成重要的公司业务需要,又对原有开发计划不造成太大的影响,很好地解决了类似的一些尴尬场面!
SeaTable目前免费使用,还有功能更强大的付费版!感兴趣的小伙伴们,可登陆或点击下方“阅读原文”直达 seatable.cn ,或者进入 SeaTable 小程序来体验 !
点击下方👇“阅读原文”,直达 SeaTable

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存