概要
上一次我们首次使用了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)的应答的范例所示。
在下面的代码中,根据“resp”变量指定“记录ID”的值并显示在弹出窗口中。
alert('recordId:' + resp.record.$id.value);
失败时的callback,可省略而无需做任何处理,这次我们先不说这个(^^)
接下来,我们把这个JavaScript上传到上一次作成的查看日志应用里,运行一下试试看吧(^^♪
如果弹出内容显示:“recordId: <record ID>”,则说明成功了!\(*^▽^*)ノ
搜索条件(查询)
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); }); })();
关于如何编写查询的示例,请参考“kintone API查询的基本写法(日文)”。
为了加深对查询语句的理解,大家还可以尝试使用其他的搜索条件,研究下搜索条件和查询字符串之前的联系哦\(^o^)/
应用的准备
第 7篇 使用自定义列表里,我们创建了信号灯的应用。这次,我们将使用这个应用,挑战用REST API来批量获取记录(^^♪
接下来,我们先从改变信号灯应用的自定义列表的设置开始。像下图那样,不选择 “分页显示” 复选框的情况下保存,显示列表页面。
再通过第7篇追加的JavaScript,就变成了下面这样。
这是因为,当不选择 “分页显示” 的时候,event.records里没有数据。
记录的批量获取
到现在为止还没有记录信息,接下来就让我们使用REST API来获取信息吧。(^^♪
那么,就让我们来确认下批量获取记录(在查询中指定条件)吧。
到这一步的话,就可以轻松作成请求了。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(); } } })();
成功啦。\(*^▽^*)ノ
顺便说一下到现在为止都没有说的事,使用批量获取记录(在查询中指定条件)一次性只能获取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更新记录 >>