kintone应用的记录中,可使用表格添加多行数据。类似报价、每月考勤数据、客户访问记录等使用表格的情况比较多。因此,本次向大家介绍如何使用kintone REST API对表格进行操作。
使用kintone REST API对记录内的表格进行更新时,有几点注意事项。
更新记录时,如果不包含表格内的数据,则表格内的数据保持原样
更新记录时,如果包含表格内的数据,不包含在请求中的数据不会被更新
综合以上注意事项,给大家介绍各种情况下的使用方法。
首先,准备记录
事先添加一条记录,记录中包含文本内容和2行表格。
kintone API需要用到字段代码,为了方便起见,字段名称和字段代码设成一样。
获取记录的值
使用以下JSON格式可获取记录的值。
{ "字段代码": { "type": "RECORD_NUMBER", // 字段类型 "value": "1" // 字段的值 } }
使用以下JSON格式可获取表格字段的值。
{ "表格的字段代码": { "type": "SUBTABLE", "value": [ // 行的数据 { "id": "48290", // 行的 ID "value": { "字段代码": { "type": "SINGLE_LINE_TEXT", // 表格字段的字段类型 "value": "TableText1" // 表格内的字段的值 } } } ] } }
使用获取一条记录的API,获取刚创建的应用记录,并确认实际记录的内容。
GET https://{subdomain}.cybozu.com/k/v1/record.json?app=2364&id=1
※ 在app中指定应用ID,在id中指定记录ID。
{ "record": { "记录编号": { "type": "RECORD_NUMBER", "value": "1" }, "Title": { "type": "SINGLE_LINE_TEXT", "value": "Sample" }, "$revision": { "type": "__REVISION__", "value": "1" }, "Table": { "type": "SUBTABLE", "value": [ { "id": "48290", "value": { "Text": { "type": "SINGLE_LINE_TEXT", "value": "TableText1" }, "Number": { "type": "NUMBER" "value": "1" } } }, { "id": "48291", "value": { "Text": { "type": "SINGLE_LINE_TEXT", "value": "TableText2" }, "Number": { "type": "NUMBER" "value": "2" } } } ] }, "创建时间": { "type": "CREATED_TIME", "value": "2014-03-26T15:27:00Z" }, ・・・ } }
更新记录表格
现在,使用更新一条记录的API来更新表格字段。
在表格末尾添加行
如要向表格添加行,请求数据中必须包含现有的行ID。
※ 如果无需更新现有行中的数据,则可省略现有行的值。
"app" ・・・要更新的应用的应用ID
"id" ・・・要更新的记录ID
"Table""value"内的数组中包含的"id" ・・・现有行ID
"Table""value"内的数组中包含的"value" ・・・要添加的行的值
{ "app": 2364, "id": 1, "record": { "Table": { "value": [ { "id": "48290" }, { "id": "48291" }, { "value": { "Text": { "value": "要添加的文本" }, "Number": { "value": "3" } } } ] } } }
省略现有行的ID,在请求数据中包含现有行的所有数据,也可以给表格添加值。
※实际上系统内部的操作是先删除所有行,再添加请求数据中包含的数据。
"app" ・・・要更新的应用的应用ID
"id" ・・・要更新的记录ID
"Table""value"内的数组中包含的"value" ・・・现有行的值+要添加的行的值
{ "app": 2364, "id": 1, "record": { "Table": { "value": [ { "value": { "Text": { "value": "TableText1" }, "Number": { "value": "1" } } }, { "value": { "Text": { "value": "TableText2" }, "Number": { "value": "2" } } }, { "value": { "Text": { "value": "要添加的文本" }, "Number": { "value": "3" } } } ] } } }
执行后的页面
在表格第一行中插入一行
插入行的情况,也是跟在表格末尾添加行的处理一样。按照要在表格中显示的顺序,逐一添加到请求中。
"app" ・・・要更新的应用的应用ID
"id" ・・・要更新的记录ID
"Table""value"内的数组中包含的"id" ・・・现有行ID
"Table""value"内的数组中包含的"value" ・・・要添加的行的值
{ "app": 2364, "id": 1, "record": { "Table": { "value": [ { "value": { "Text": { "value": "在第一行中插入" }, "Number": { "value": "0" } } }, { "id": "48290" }, { "id": "48291" } ] } } }
这里也跟在表格末尾添加行时一样,可以省略现有行的ID,通过在请求中添加所有必要的数据来更新表格。
{ "app": 2364, "id": 1, "record": { "Table": { "value": [ { "value": { "Text": { "value": "在第1行中插入" }, "Number": { "value": "0" } } }, { "value": { "Text": { "value": "TableText1" }, "Number": { "value": "1" } } }, { "value": { "Text": { "value": "TableText2" }, "Number": { "value": "2" } } } ] } } }
执行后的页面
只想更新表格中某行的特定字段
通过指定要更新的行的ID,可对该行的特定字段进行更新。
如同一行的其他字段无需更新,该字段可省略。
※ 省略现有行ID时,将删除相应的行。
"app" ・・・要更新的应用的应用ID
"id" ・・・要更新的记录ID
"Table"内的"id" ・・・要更新的行的ID
{ "app": 2364, "id": 1, "record": { "Table": { "value": [ { "id": "48300", "value": { "Text": { "value": "仅更新特定的字段" } } }, { "id": "48301", "value": { "Number": { "value": "200" } } } ] } } }
执行后的页面
更新了红色框内的部分。
注意事项
如果指定了不存在的行ID,则不会发出错误,而是其作为新的数据添加。
同时,将删除表中本来存在但未通过API指定行ID的数据。
补充)删除表格内的所有数据
Table对象内的value数组设置为空时,将删除表格中的数据。
"app" ・・・要更新的应用的应用ID
"id" ・・・要更新的记录ID
{ "app": 2364, "id": 1, "record": { "Table": { "value": [] } } }
如果掌握了像上面这些表格的更新技术,可在很多情况下发挥作用。
请务必自己试试看。
该Tips在2014年4月版本中确认过。
回复(3)
刚刚那个格式发错了,可以看看下面的这个,这个是我刚刚写的。
这个表格更新字段有没有JavaScript的范例