第 10篇 使用kintone REST API获取记录

cybozu发表于:2016年11月08日 18:16:16更新于:2022年07月27日 14:33:00

概要

上一次我们首次使用了kintone REST API,但实际上,我们也可以使用kintone REST API来获取记录。关于应用信息和记录信息其实也可以通过REST API获取。趁着这个机会我们来试一下吧(^^)
这次,我们将给大家介绍批量获取记录和使用搜索条件(查询)获取记录的方法!

获取记录(1条)

那么,我们就尝试获取1条记录吧(^^♪

要获取记录,请使用kintone REST API的获取记录(GET)

上次已经介绍了在kintone JavaScript API里使用kintone REST API的方法了吧(*^_^*)

那么事不宜迟,让我们使用这些来获取记录的处理程序吧!

(function() {
  'use strict';
  kintone.events.on('app.record.detail.show', function(event) {
    
    // 请求参数
    var body = {
      'app': kintone.app.getId(),
      'id': 1
    };
    
    kintone.api(
      kintone.api.url('/k/v1/record', true), // pathOrUrl
      'GET', // method
      body, // params
      function(resp) { // 成功时的callback
        alert('recordId:' + resp.record.$id.value);
      }
    );
  });
})();

怎么样?上次回调函数省略了说明,在这里,稍微补充了一下(^^)
请看一下,成功时在callback里指定的匿名函数。

      function(resp) { // 成功时的callback
        alert('recordId:' + resp.record.$id.value);
      }

成功后的Callback在请求成功时执行,API的返回值(应答)作为参数被传递。
这时,API的应答存储在名为“resp”的变量中,获取到的记录信息将以JSON格式储存,如获取记录(GET)的应答的范例所示。

001607d4beb0c407fbef95fab0c147c

在下面的代码中,根据“resp”变量指定“记录ID”的值并显示在弹出窗口中。

        alert('recordId:' + resp.record.$id.value);

失败时的callback,可省略而无需做任何处理,这次我们先不说这个(^^)

接下来,我们把这个JavaScript上传到上一次作成的查看日志应用里,运行一下试试看吧(^^♪

如果弹出内容显示:“recordId: <record ID>”,则说明成功了!\(*^▽^*)ノ

001607e3b4c3b45401a452e40f6a554

搜索条件(查询)

REST API里批量获取记录信息的API是批量获取记录(在查询中指定条件),趁着使用这个API的机会,我们来研究下“查询”吧(^^♪

大家可以看一下获取记录列表的查询字符串(带有order by, limit, offset)。使用这个JavaScript API,我们可以获取现在检索条件的查询字符串。来试一下吧(^^♪

(function() {
    "use strict";
    kintone.events.on('app.record.index.show', function(event) {
        // 获取记录列表的查询字符串(带有order by, limit, offset)
        var currentQuery = kintone.app.getQuery();
        alert(currentQuery);
    });
})();

00158252b031820e4cab05129b94e5e

关于如何编写查询的示例,请参考“如何为kintone API编写查询基础(日文)”。

为了加深对查询语句的理解,大家还可以尝试使用其他的搜索条件,研究下搜索条件和查询字符串之前的联系哦\(^o^)/

应用的准备

第 7篇 使用自定义列表里,我们创建了信号灯的应用。这次,我们将使用这个应用,挑战用REST API来批量获取记录(^^♪

接下来,我们先从改变信号灯应用的自定义列表的设置开始。像下图那样,不选择 “分页显示” 复选框的情况下保存,显示列表页面。

001582e928937f753eea1fc2c41b314

再通过第7篇追加的JavaScript,就变成了下面这样。

001582e93c748610e64b177e4fa2795

这是因为,当不选择 “分页显示” 的时候,event.records里没有数据。

记录的批量获取

到现在为止还没有记录信息,接下来就让我们使用REST API来获取信息吧。(^^♪

那么,就让我们来确认下批量获取记录(在查询中指定条件)吧。

00158e46295ec65fe83d2c3860b5baf

到这一步的话,就可以轻松作成请求了。field参数可以省略,指定其他的两个参数,来批量获取记录吧(^^♪

(function() {
    "use strict";
    kintone.events.on('app.record.index.show', function(event) {
        if (event.viewName !== '自定义列表') {
            return;
        }
        // 请求参数
        var requestParam = {
            'app': kintone.app.getId(),
            'query': kintone.app.getQuery()
        };
        kintone.api(kintone.api.url('/k/v1/records', true), 'GET', requestParam, function(resp) {
                // 获取记录: resp.records
                myDisplayCustomizedView(resp.records);
            }
        );
    });
    // 自定义列表里记录显示
    function myDisplayCustomizedView(records) {
        if (!records || !records.length) {
            document.getElementById('my-customized-view').innerText = '无可显示的记录';
            return;
        }
        var recUrl = location.protocol + '//' + location.hostname + '/k/' + kintone.app.getId() + '/show#record=';
        var myRecordSpace = document.getElementById('my-tbody');
        myRecordSpace.innerText = '';
        for (var i = 0; i < records.length; i++) {
            var record = records[i];
            var row = myRecordSpace.insertRow(myRecordSpace.rows.length);
            var cell1 = row.insertCell(0);
            var cell2 = row.insertCell(1);
            var cell3 = row.insertCell(2);
            var tmpA = document.createElement('a');
            tmpA.href = recUrl + record.记录编号.value;
            tmpA.innerText = record.记录编号.value;
            cell1.appendChild(tmpA);
            cell2.innerText = record.信号颜色.value;
            var createdAt = new Date(record.创建时间.value);
            cell3.innerText = createdAt.toLocaleString();
        }
    }
})();

001582e96a34ee7cb9f4d6038625bfe

成功啦。\(*^▽^*)ノ

顺便说一下到现在为止都没有说的事,使用批量获取记录(在查询中指定条件)一次性只能获取100条记录(用option可以获取500条)。

关于记录的获取方法,大致可分为三种。可根据实际情况选择合适的方法。对于这三种方法的特点及其使用方法,请参考存在offset限制值的前提下批量获取记录

最后

JavaScript API也好、REST API也好,大家大致已经掌握了使用方法了吧(^^)  kintone API的文档 里还有很多尚未介绍的API,能够顺利学习到这里的同学们肯定能够看着文档,制作出高级的自定义了吧。(*^_^*)

Let’s kintone customize\(^o^)/

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

<< 第 9篇 使用REST API来添加记录 | 第 11篇 使用REST API更新记录 >>


    注意:贴代码时请注意格式并使用"代码语言",与本文无关的问题请至“讨论社区”提问。