Inde
获取记录(1条)
有权限查看记录的用户可通过指定记录ID来获取记录内容。
HTTP 方法
GET
URI
https://(子域名).cybozu.cn/k/v1/record.json
来宾空间内的应用
https://(子域名).cybozu.cn/k/guest/(空间的ID)/v1/record.json
必要的访问权限
应用的记录查看权限
要获取值的记录的查看权限
要获取值的字段的查看权限
请求参数
参数名称 | 要指定的值 | 必须 | 说明 |
---|---|---|---|
app | 数值或字符串 | 必须 | 指定应用的ID。 |
id | 数值或字符串 | 必须 | 指定记录ID。 |
请求的范例
(1)使用 HTTP的查询字符串来发送参数时
使用【&】将【app】和【id】参数连起来,作为HTTP的查询字符串来发送。
查询字符串
app=8&id=100
请求头部中包含的字符串
GET /k/v1/record.json?app=8&id=100 HTTP/1.1 Host: example.cybozu.cn:443 X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU= Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU=
Content-Type头部不需要。
(2)使用 JSON格式发送参数时(JSON数据写在HTTP请求的请求正文中时)
请求的头部和正文的范例
请求头部
GET /k/v1/record.json HTTP/1.1 Host: example.cybozu.cn:443 X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU= Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU= Content-Type: application/json
请在Content-Type中指定application/json。如不指定,JSON 无法识别,执行时将报错。
正文
{ "app": 8, "id": 100 }
应答的范例
处理成功时,以JSON格式返回记录的内容。※关于各字段的格式请参考 字段格式。
{ "record": { "记录编号": { "type": "RECORD_NUMBER", "value": "1" }, "$id": { "type": "__ID__", "value": "1" }, "$revision": { "type": "__REVISION__", "value": "5" }, "创建人": { "type": "CREATOR", "value": { "code": "zhou", "name": "周世杰" } }, "创建时间": { "type": "CREATED_TIME", "value": "2020-10-20T01:42:00Z" }, "更新人": { "type": "MODIFIER", "value": { "code": "zhou", "name": "周世杰" } }, "更新日期": { "type": "UPDATED_TIME", "value": "2020-10-20T01:42:00Z" }, "单行文本框": { "type": "SINGLE_LINE_TEXT", "value": "测试" }, "数值": { "type": "NUMBER", "value": "123" }, "计算": { "type": "CALC", "value": "123" }, "多行文本框": { "type": "MULTI_LINE_TEXT", "value": "该条为\n测试用记录。" }, "文本编辑框": { "type": "RICH_TEXT", "value": "<a href=\"http://www.cybozu.cn\">才望子</a>" }, "复选框": { "type": "CHECK_BOX", "value": [ "选项1", "选项2" ] }, "单选框": { "type": "RADIO_BUTTON", "value": "选项3" }, "下拉框": { "type": "DROP_DOWN", "value": "选项3" }, "多选": { "type": "MULTI_SELECT", "value": [ "选项1", "选项2" ] }, "附件": { "type": "FILE", "value": [ { "contentType": "text/plain", "fileKey":"201202061155587E339F9067544F1A92C743460E3D12B3297", "name": "17to20_VerupLog (1).txt", "size": "23175" }, { "contentType": "text/plain", "fileKey": "201202061155583C763E30196F419E83E91D2E4A03746C273", "name": "17to20_VerupLog.txt", "size": "23175" } ] }, "链接": { "type": "LINK", "value": "http://www.cybozu.cn/" }, "日期": { "type": "DATE", "value": "2020-10-19" }, "时间": { "type": "TIME", "value": "13:33" }, "日期与时间": { "type": "DATETIME", "value": "2020-10-19T04:33:00Z" }, "选择用户": { "type": "USER_SELECT", "value": [ { "code": "zhou", "name": "周世杰" }, { "code": "chen", "name": "陈飞" } ] }, "类别": { "type": "CATEGORY", "value": [ "category1", "category2" ] }, "状态": { "type": "STATUS", "value": "未处理" }, "执行人": { "type": "STATUS_ASSIGNEE", "value": [ { "code": "zhou", "name": "周世杰" } ] }, "lookup": { "type": "SINGLE_LINE_TEXT", "value": "Code001" }, "表格": { "type": "SUBTABLE", "value": [ { "id": "48290", "value": { "单行文本框": { "type": "SINGLE_LINE_TEXT", "value": "示例1" }, "数值_0": { "type": "NUMBER", "value": "1" }, "复选框_0": { "type": "CHECK_BOX", "value": [ "选项1" ] } } }, { "id": "48291", "value": { "单行文本框": { "type": "SINGLE_LINE_TEXT", "value": "示例2" }, "数值_0": { "type": "NUMBER", "value": "2" }, "复选框_0": { "type": "CHECK_BOX", "value": [ "选项2" ] } } } ] }, "选择组织": { "type": "ORGANIZATION_SELECT", "value": [ { "code": "kaifabu", "name": "开发部" }, { "code": "renshibu", "name": "人事部" } ] }, "选择组": { "type": "GROUP_SELECT", "value": [ { "code": "project_manager", "name": "项目管理人员" }, { "code": "team_leader", "name": "组长" } ] } } }
JavaScript范例
使用API请求发送 kintone REST API 请求
var body = { 'app': kintone.app.getId(), 'id': 1001 }; kintone.api(kintone.api.url('/k/v1/record', true), 'GET', body, function(resp) { // success console.log(resp); }, function(error) { // error console.log(error); });
使用 XMLHttpRequest 请求
var appId = kintone.app.getId(); var params = '?app=' + appId + '&id=1001'; var url = 'https://{subdomain}.cybozu.cn/k/v1/record.json' + params; var xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); xhr.onload = function() { if (xhr.status === 200) { // success console.log(JSON.parse(xhr.responseText)); } else { // error console.log(JSON.parse(xhr.responseText)); } }; xhr.send();
批量获取记录(在查询中指定条件)
有权限查看记录的用户可在查询中指定条件来获取记录。
一次最多可获取 500条记录(初始值为100)。
offset的上限值为1万条。
请求时在查询中可指定的 fields下标的范围为0~99。
请求时在正文中最多可指定1000个fields。
当查询中用字符串检索时,为关键字检索。具体可以参考“输入关键字时的注意事项”。
如果存在超过10万个查询搜索结果,筛选会中断。在这种情况下,应答头部返回“x-cybozu-warning:Filter aborted because of too many search results.”。
※2020年7月的定期维护时,offset上限值的设置改为了1万条。
因此,烦请对您正式环境中或正要应用到正式环境的程序进行检查,如果存在批量获取记录时获取结果可能超过1万条的处理,请做相应的修改。
详情请参考 存在offset限制值的前提下批量获取记录。
HTTP 方法
GET
URI
https://(子域名).cybozu.cn/k/v1/records.json
来宾空间内的应用
https://(子域名).cybozu.cn/k/guest/(空间的ID)/v1/records.json
必要的访问权限
应用的记录查看权限
要获取值的记录的查看权限
要获取值的字段的查看权限
请求参数
参数名称 | 要指定的值 | 必须 | 说明 |
---|---|---|---|
fields | 字符串的数组 | 可省略 | 指定应答中要包含的字段代码。省略时,将返回有查看权限的所有字段的值。 |
app | 数值或字符串 | 必须 | 指定应用的ID 。 |
query | 字符串 | 可省略 | 用于指定在应答中要包含的记录条件的查询字符串。查询字符串内可使用后文中提到的运算符和选项。省略时将返回有查看权限的所有记录。 |
totalCount | 布尔值或字符串 | 可省略 | 要获取满足【query】参数中指定的条件的记录条数时,指定【true】。 |
【query】参数中可使用的运算符和函数
运算符
运算符 | 范例 | 意思 |
---|---|---|
= | 文本框_0 = "测试" | 筛选出运算符前的字段代码的值与运算符后的值一致的记录。 |
!= | 文本框_0 != "测试" | 筛选出运算符前的字段代码的值与运算符后的值不一致的记录。 |
> | 数值_0 > 10 | 筛选出运算符前的字段代码的值比运算符后的值大的记录。 |
< | 数值_0 < 10 | 筛选出运算符前的字段代码的值比运算符后的值小的记录。 |
>= | 数值_0 >= 10 | 筛选出运算符前的字段代码的值大于或等于运算符后的值的记录。 |
<= | 数值_0 <= 10 | 筛选出运算符前的字段代码的值小于或等于运算符后的值的记录。 |
in | 下拉菜单_0 in ("A", "B") | 筛选出运算符前的字段代码的值与运算符后的括号内列举的任意一个字符串一致的记录。筛选出下拉菜单或单选框等选择型字段中选择了所指定的选项的记录。左边的例子中,将筛选出下拉菜单中选择了【A】或【B】的记录。 |
not in | 下拉菜单_0 not in ("A", "B") | 筛选出运算符前的字段代码的值与运算符后的括号内列举的任意一个字符串不一致的记录。筛选出下拉菜单或单选框等选择型字段中没有选择所指定选项的记录。左边的例子中,筛选出下拉菜单中选择了【A】或【B】之外的选项的记录。 |
like | 文本框_0 like "测试" | 筛选出运算符前的字段代码的值中包含了运算符之后的值的记录。如要判断的字段类型为附件,文件名和文件内容都将作为判断对象。 |
not like | 文本框_0 not like "测试" | 筛选出运算符前的字段代码的值不包含运算符之后的值的记录。 |
or | 数值_0 < 10 or 数値_0 > 20 | 上面是使用运算符对两个条件公式进行或运算。在左边的例子中,将筛选出字段代码【数值_0】比10小、或比20大的记录。 |
and | 数值_0 >= 10 and数值_0 <= 20 | 上面是使用运算符对两个条件公式进行与运算。左边的例子中,将筛选出字段代码【数值_0】大于等于10、且小于等于20的记录。 |
字段代码写在运算符前面。不可写在运算符后面。
公式可以用【( )】括起来作为一个组。比如: (数值_0 >= 10 and 数值_0 <= 20) or (数值_1 >= 100 and 数值_1 <= 200)
当查询中带有字符串检索时,为关键字检索。具体可以参考“输入关键字时的注意事项”。
函数
函数名 | 范例 | 内 容 |
---|---|---|
LOGINUSER() | 创建人 in (LOGINUSER()) | 切换成执行了API的用户。 |
PRIMARY_ORGANIZATION() | 组织 in (PRIMARY_ORGANIZATION()) | 执行了API的用户的优先组织。 “组织 in (PRIMARY_ORGANIZATION())”的条件将被忽略,并且将检索满足其他过滤条件的所有记录。 |
NOW() | 创建时间 = NOW() | 切换成执行了API的日期与时间。 |
TODAY() | 创建时间 = TODAY() | 切换成执行了API的日期。 |
YESTERDAY() | 创建时间 = YESTERDAY() | 切换成执行了API的日期的前天。 |
TOMORROW() | 日期与时间 = TOMORROW() | 切换成执行了API的日期的后一天。 |
FROM_TODAY(数字,时间的单位) | 创建时间 < FROM_TODAY(5, DAYS) | 时间的单位中可指定的字符串。
|
THIS_WEEK() | 创建时间为周日时
| 周几中可指定的字符串。
|
LAST_WEEK() | 创建时间 = LAST_WEEK() | 关于可指定的周几,详情请参考THIS_WEEK()。 如不指定,默认为上周一整周。 |
NEXT_WEEK() | 日期与时间 = NEXT_WEEK() | 关于可指定的周几,详情请参考THIS_WEEK()。 如不指定,默认为下周一整周。 |
THIS_MONTH([数值|格式字符]) | 本月整月
| 切换成执行了API的月份。 参数中可指定以下值。
|
LAST_MONTH([数值|格式字符]) | 上个月整月
| 切换成执行了API的上个月。 参数中可指定以下值。
|
NEXT_MONTH([数值|格式字符]) | 下个月整月
| 切换成执行了API的月的下个月。 参数中可指定以下值。
|
THIS_YEAR() | 创建时间 = THIS_YEAR() | 切换成执行了API的年。 |
LAST_YEAR() | 创建时间 = LAST_YEAR() | 切换成执行了API的年的前年。 |
NEXT_YEAR() | 日期与时间 = NEXT_YEAR() | 切换成执行了API的年的后一年。 |
各字段、各系统标识符中可使用的运算符和函数列表
查询中包含表格内的字段、关联记录列表的字段时的注意事项
查询中包含表格内的字段、关联记录列表的字段时,不可使用【=】、【!=】,而是使用【in】、【not in】运算符。
包含在关联记录列表内的字段的指定方法
条件中指定关联记录列表内的字符时,按以下格式指定字段。
关联记录列表的字段代码.关联给什么字段
关联记录列表的字段代码的指定范例
关联记录列表的字段代码为【企业管理】
企业管理中包含的【企业名称】为【才望子】
企业管理中包含的【所在地】字段包含【东京都】
【query】参数的范例
企业管理.企业名称 in ("才望子") and 企业管理.所在地 like "东京都"
指定记录编号字段
除了使用筛选条件和order by来指定记录编号的字段代码,还可以使用$id指定记录编号字段。
指定关联记录列表内的记录编号字段时,可使用【关联记录列表的字段代码.$id】来指定。
双引号和反斜杠转义处理
如果字段的值包含双引号 (") 或反斜杠 (\) ,则需要转义才能将其与转义字符区分开来。
需要转义的字段类型
单行文本框
多行文本框
文本编辑框
复选框
单选框
下拉菜单
多选
状态
转义范例
若要使用复选框(字段代码:checkbox)中的“sample\"1\"”项来筛选,请按如下方式指定查询。
{ "app": 1, "query": "checkbox in ("sample\"1\"")" }
如果要像发送kintone REST API请求那样,在 body 里以 JSON 格式指定查询条件,要进行如下转义。
// 对「sample"1"」进行转义的例子 const body = { app: kintone.app.getId(), query: 'Checkbox in ("sample\\"1\\"")' }; // 对「sample\2\」进行转义的例子 const body = { app: kintone.app.getId(), query: 'Checkbox in ("sample\\\\2\\\\")' };
【query】参数中可使用的选项
选项 | 范例 | 说明 |
---|---|---|
order by | order by 更新时间 asc | 可通过在本选项后指定字段代码的方式来指定记录的输出顺序。在字段代码的后面指定【asc】时升序,指定【desc】时降序。 多个项目排序时,以逗号分隔“字段代码排列顺序”。 示例:“order by 字段代码1 desc,字段代码2 asc” 省略时,将按记录ID的降序返回。 另外,order by可以指定的字段有限制。详情请参考“排序”中可选择哪些字段”。 |
limit | limit 20 | 在本选项后面指定数值,将输出同等数量的记录。左边的列子中,将输出前20条记录。省略时默认为100、上限为500。 |
offset | offset 30 | 本选项之后指定数字为要跳过的记录条数。只筛选出其之后的记录。在左边的列子中,跳过前面30条记录,从第31条起输出记录。上限为10000条。 |
上面的运算符、选项可以组合使用。
请求的范例
使用HTTP的查询字符串发送参数时
使用【&】将【app】【query】【fields】这三个参数连起来作为HTTP的查询字符串发送。查询的每个参数名称和值都需要进行URL编码。
获取记录的条件的范例
应用ID为【8】
【query】参数的值为【更新时间 > "2012-02-03T09:00:00+0800" and 更新时间 < "2012-02-03T10:00:00+0800" order by 记录编号 asc limit 10 offset 1】
要输出的字段为【记录编号】【创建时间】【下拉菜单】
获取满足所指定条件的记录的条数
HTTP 的查询字符串的范例
app=8&query=%E6%9B%B4%E6%96%B0%E6%97%B6%E9%97%B4%20%3E%20%222012-02-03T09%3A00%3A00%2B0800%22%20and%20%E6%9B%B4%E6%96%B0%E6%97%B6%E9%97%B4%20%3C%20%222012-02-03T10%3A00%3A00%2B0800%22%20order%20by%20%E8%AE%B0%E5%BD%95%E7%BC%96%E5%8F%B7%20asc%20limit%2010%20offset%201&fields[0]%3D%E8%AE%B0%E5%BD%95%E7%BC%96%E5%8F%B7&fields[1]%3D%E5%88%9B%E5%BB%BA%E6%97%B6%E9%97%B4&fields[2]%3D%E4%B8%8B%E6%8B%89%E8%8F%9C%E5%8D%95
请求头部的范例
GET /k/v1/records.json?app=8&query=%E6%9B%B4%E6%96%B0%E6%97%B6%E9%97%B4%20%3E%20%222012-02-03T09%3A00%3A00%2B0800%22%20and%20%E6%9B%B4%E6%96%B0%E6%97%B6%E9%97%B4%20%3C%20%222012-02-03T10%3A00%3A00%2B0800%22%20order%20by%20%E8%AE%B0%E5%BD%95%E7%BC%96%E5%8F%B7%20asc%20limit%2010%20offset%201&fields[0]%3D%E8%AE%B0%E5%BD%95%E7%BC%96%E5%8F%B7&fields[1]%3D%E5%88%9B%E5%BB%BA%E6%97%B6%E9%97%B4&fields[2]%3D%E4%B8%8B%E6%8B%89%E8%8F%9C%E5%8D%95 HTTP/1.1 Host: example.cybozu.cn:443 X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU= Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU=
Content-Type头部不需要。
使用JSON格式发送参数时(JSON数据写在HTTP 请求的请求正文中)
请求的头部和正文的范例
请求头部
GET /k/v1/records.json HTTP/1.1 Host: example.cybozu.cn:443 X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU= Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU= Content-Type: application/json Content-Length: 234
正文
{ "app": 8, "query": "更新时间 > \"2012-02-03T09:00:00+0800\" and 更新时间 < \"2012-02-03T10:00:00+0800\" order by 记录编号 asc limit 10 offset 1", "fields": ["记录编号", "创建时间", "下拉菜单"] }
请在Content-Type中指定application/json。如不指定,JSON 无法识别,执行时将报错。
字符串的值使用【\(反斜杆)】转义后的【"(双引号)】括起来。
应答的范例
使用JSON格式返回包含指定字段的记录。※关于各字段的格式请参考 字段格式。
{ "records": [ { "记录编号": { "type": "RECORD_NUMBER", "value": "1" }, "创建时间": { "type": "CREATED_TIME", "value": "2012-02-03T09:10:00Z" }, "下拉菜单": { "type": "DROP_DOWN", "value": null } }, { "记录编号": { "type": "RECORD_NUMBER", "value": "2" }, "创建时间": { "type": "CREATED_TIME", "value": "2012-02-03T09:22:00Z" }, "下拉菜单": { "type": "DROP_DOWN", "value": null } } ], "totalCount": null }
JavaScript范例
使用API请求发送 kintone REST API 请求
var body = { 'app': kintone.app.getId(), 'query': '更新时间 > \"2012-02-03T09:00:00+0800\" and 更新时间 < \"2012-02-03T10:00:00+0800\" order by 记录编号 asc limit 10 offset 1', 'fields': ['记录编号', '创建时间', '下拉菜单'] }; kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body, function(resp) { // success console.log(resp); }, function(error) { // error console.log(error); });
使用 XMLHttpRequest 请求
var appId = kintone.app.getId(); var params = '?app=' + appId +'&query=' + encodeURIComponent('更新时间 > "2012-02-03T09:00:00+0800" and 更新时间 < "2012-02-03T10:00:00+0800" order by 记录编号 asc limit 10 offset 1') + '&fields[0]=' + encodeURIComponent('记录编号') + '&fields[1]=' + encodeURIComponent('创建时间') + '&fields[2]=' + encodeURIComponent('下拉菜单'); var url = 'https://{subdomain}.cybozu.cn/k/v1/records.json' + params; var xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); xhr.onload = function() { if (xhr.status === 200) { // success console.log(JSON.parse(xhr.responseText)); } else { // error console.log(JSON.parse(xhr.responseText)); } }; xhr.send();
限制事项
请参考限制事项 。
补充
记录数据的语言由认证方式决定。
使用 API 令牌验证:为“Administrator”的显示语言
其他的验证方式:为执行 API 的用户的显示语言
如果语言设置为“与 Web 浏览器的设置相同”,则根据 请求头部 的“Accept-Language”里否指定值,获取到的数据的语言将发生变化。
有指定值:为“Accept-Language”中指定的语言
无指定值:为 cybozu.com 共同管理的 区域设置中设置的语言
回复(19)
请问:我现在有个单行文本框内容是:"PO51023",现在用系统提供的筛选方式 "包含以下关键字" 51023 ,怎么选不出数据?
谢谢
是的,如果没有权限的话返回的是 {code: "CB_NO02", id: "XXX", message: "无权限。"}
想请问一下,获取记录时,如果没有记录的查看权限或者编辑权限,kintong返回的是什么,code是 CB_NO02 吗?
是这样子吗:
{"code":"CB_NO02","id":"","message":""}
想请问一下,获取记录时,如果没有记录的查看权限或者编辑权限,kintong返回的是什么,code是 CB_NO02 吗
请通过游标来循环获取数据。
现在主要有个问题就是,在for循环里GET数据的话,会导致循环只跑一次就跳出了,
可以使用 https://cybozudev.kf5.com/hc/kb/article/1300894/ 这个使用游标批量获取记录
如果我要获取全表数据(大于10000条)有什么简便方法实现吗?
指定搜索张三:
https://(子域名).cybozu.cn/k/v1/records.json?app=指定APP的ID&query=Text in ("张三")
模糊搜索带有张三字样:
https://(子域名).cybozu.cn/k/v1/records.json?app=指定APP的ID&query=Text like "张三"
query条件中需要表格中的某个字段等于某个值,比如我表格中单行文本框的字段代码为Text,我要筛选单行文本框中的内容为张三的那条记录,我应该怎么写query呢
要获取满足【query】参数中指定的条件的记录条数时,指定【true】。
不指定时,应答返回的totalCount值为null。
请问, 列表的总条数应该如何来获取?
是要下载EXCEL文件吗?之前的文章“https://developer.kintone.io/hc/en-us/articles/360012122753”写了怎么制作下载按钮了,请参考。
请问我怎么下载文件
关于导出到EXCEL的文章你可以参考:
https://developer.kintone.io/hc/en-us/articles/360012122753
中文网站暂时还没有这篇文章,我们会加快速度给大家带来最新的文章
请问,有导出数据到Excel文件的帮助文档吗
你好,你可以看一下这篇文章“如何将汇总后的数据下载到CSV文件?”
希望能帮到你
想请问,我要怎么将通过接口获取到的数据导出Excel文件中。