ARTICLE · 1144404
WPS 在线表格组件:平替原版 GoogleSheet,AppInventor 把数据实时写进 在线表格
收报名还在群里接龙?做个 App 把数据实时写进 WPS 在线表格
摘要: 微信接龙收报名,格式五花八门,最后还得人工搬进表格。App Inventor 的「WPS 在线表格」组件把这事反过来:数据从一开始就在表格里——手机上提交,组织者电脑上实时看,还能直接在表里改。从建表到做出报名 App,一步步走完。
接龙的痛,一张表解决
收过报名的都见过:群里接龙接出七八种格式,有人带序号有人不带,有人只留个昵称。活动完还得有人挨条抄进表格。
换个思路,数据一开始就该在表格里。金山文档(WPS)的在线表格正好干这个:手机 App 往表里提交一行,电脑上打开同一张表,实时就看到了,想在表里改也随便改。报名、签到、库存清点、成绩查询,凡是「多台手机共用一张表」的事,都是同一个套路。
App Inventor 里对应的组件叫「WPS 在线表格」,国内直接能用——之前想做这事得用「电子表格」组件连谷歌表格,要梯子要谷歌账号,现在不用了。

先把表格那头准备好
准备工作在电脑上做,四步。
第一步,建表。 浏览器打开金山文档 kdocs.cn,新建 → Office 文档 → 表格,选空白表格。把底部第一个工作表标签改成 报名,第一行 A1、B1、C1 填上 姓名、手机、时间。
▲ 把底部工作表标签命名为报名
后面积木里写的"报名",指的就是这个底部标签,要一字不差。
第二步,贴脚本。 菜单「效率」→「高级开发」→「AirScript 脚本编辑器」,点「创建脚本」时必须选文档共享脚本——「我的脚本」没有下一步要用的 webhook 链接。然后把通用脚本整段粘贴进去,保存,名字随便取。
▲ 新建文档共享脚本
这段脚本六十来行,已经放在文档站,整段复制就行,别改它:WPS 在线表格使用指导,第二步那个代码框就是。App 的读写全靠它。
第三步,复制 webhook 链接。 保存后在左侧脚本列表点这个脚本的「更多」菜单,选「复制脚本 webhook」,把整条链接填到组件的 WebhookUrl 属性。注意是脚本的 webhook,不是浏览器地址栏里那张表的网址,两者长得完全不一样。
▲ 从脚本更多菜单复制脚本 webhook
第四步,建脚本令牌。 点脚本编辑器工具栏的盾牌图标「脚本令牌」,勾选「我已知晓」,创建(首次要做实名认证),复制令牌填进组件的 Token 属性。
▲ 在脚本编辑器中创建脚本令牌
原理一句话就能说清:App 带着令牌去调用这段脚本,由脚本在表格里完成读写。所以每次操作都过一遍金山文档的服务器,一两秒的延迟是正常的。
App 这头:提交,然后刷新
组件面板「存储」类里拖一个 WPS 在线表格,WebhookUrl 和 Token 填好。再拖两个文本输入框(姓名、手机)、两个按钮(提交、刷新)、一个标签显示状态、一个列表显示框显示名单,外加一个计时器——只用它取当前时间,记得把「启用计时」属性关掉。
提交的积木:

「添加行」是异步的:积木发出请求就返回了,数据真正落进表格之后才触发「添加行完成」,新行的行号在事件参数里。所以「提交中…」写在调用后面,「已提交,在第几行」写在事件里——别在调用的下一行就去取结果,那时候多半还没写完。
刷新的积木:

「读取工作表」把整张表读回来,数据是列表的列表,一行一个列表。第一行是标题,所以列表第一项是「姓名」;不想让它出现,循环从第 2 行开始跳过标题,或者改用「读取范围」只读 A2 往下。
建议再补一块「出现错误时」的积木,把错误信息显示到标签上。链接或令牌填错、工作表名对不上,都会走这里,排查时省很多事。
跑起来试试。手机上填姓名和手机号,点提交:
▲ 手机提交报名信息后显示新增行号
回到电脑上那张「报名」工作表,第 2 行已经躺在那儿了。组织者什么都不用做,大家看的本来就是同一张表:
▲ 在线报名工作表显示手机提交的数据
查一下:这个人报名了吗
现场签到时报个手机号,一查就知道。用「精确匹配数据」,第二个参数是列号,手机在第 2 列:

行号列表是空的就没报过;有,就把匹配到的第一行的姓名拿出来。还有个「部分匹配数据」是包含匹配,比如只记得姓,用它按姓名列模糊找。
几个坑,提前说
最后
这个组件的方法和事件跟「电子表格」组件同名,之前用谷歌表格做的项目,换个组件基本不用动积木。安卓和鸿蒙都支持。
通用脚本做不到的事——比如只返回某个学号的成绩、跨表统计——可以在表格里另建一个自己的脚本,用「运行脚本」去调它,这块进阶玩法文档站都有,搜「WPS 在线表格」就行。
好了,是不是很简单,今天的分享就到此结束,咱们下回见;
如果觉得文章对你有帮助,记得点.赞.转.发.收.藏喔!