针对后追加的计算字段批量更新值的方法

cybozu发表于:2016年10月09日 16:40:42更新于:2022年12月07日 13:10:23

大家好,此次为大家介绍的是:在对使用中的应用添加新的计算字段后,如何使用JavaScript来批量执行字段更新。

kintone的一大亮点是,在应用创建好之后,仍可继续添加字段,所以在最开始即便没有考虑好所有需求,也可以开始着手创建。

但是,用于显示数值字段计算结果的计算字段,如果是在创建应用之后再添加,则之前就已经存在的记录不会自动更新显示计算结果。

当然,打开记录的详情页面,不做任何变更再次保存,就可以将计算结果反映到计算字段上去。但是像那种有大量记录存在的情况下,对所有的记录都进行这样的操作并非是理想的方法。

这时候,就会想要有一种可以一键就批量更新计算值的方法。

范例设想

此次为大家介绍的JavaScript,虽然无论什么样的应用都可以适用,但是在这里我们假设有某个应用,用于记录“合计金额”和“参加人数”。下图是其列表显示页面,有3条记录。

00157fa16969f66e83fd11d6dc36b62

在此想要将人均金额计算显示出来的话,就要追加”人均金额”这个计算字段。当然,计算公式就是“合计金额/参加人数”了。(已备好字段格式和字段代码)

下图就是追加“人均金额”字段之后的列表画面。

00157fa1756c1dac511d95b1cb5f2e2

如图所示,如果仅是追加计算字段,计算结果还是无法显示。
在这个示例中,因为只有3条记录,可以通过再次一条一条保存记录的方法来反映计算结果的值,但是如果有成千上百条记录的话就悲剧了。。。

因此,我们想要通过空更新(空更新:仅做页面内容的更新,不做实际值的变更)来对多条记录进行批量的更新。

对多条记录实行空更新

kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {app: appId}, function(resp) {
 
        //////// 创建空更新对象
        var param = {
            "app": appId,
            "records": []
        };
 
        for (var i = 0; i < resp['records'].length; i++) {
            param['records'][i] = {
                "id": resp.records[i].$id.value,
                "record": {}
            }
        }

之后,基于这个参数通过 PUT方法来更新记录就更新完成了。

还有,这个脚本中“记录编码”字段的字段代码,是以默认既定值的“记录编码”作为前提的。

※照此来作成的脚本可以适用于上限100记录的应用。超过100条记录时请参照此处(暂无中文)。

尝试下批量更新吧

用JavaScript在记录列表页面放置按钮,试试看批量更新吧。

001580f0b36268686c02b39dbe186a0

只要点击按钮,就会调用空更新的函数。
如下图所示,可以看出已将正确的计算结果反映到了“人均金额”字段。

00157fa1a17ec8ca26b2e2d43208225

真的非常方便呢!

持续使用kintone应用的话必然会发生需要添加字段的情况,但就如此次为您展示的一样,肯定会有需要计算字段值的时候。这个脚本适用于任何应用,所以遇到相同的情况时请务必活用。

该Tips在2014年4月版中进行过确认。