kintoneアプリのレコードは、テーブルという複数の行を作成できます。
見積もりや月間タイムカード、訪問記録など、テーブルを利用するシーンは多いです。
本記事では、kintone REST APIを使ったテーブル操作を紹介します。
kintone REST APIを使って、レコード内のテーブルを更新するときには次の2つの注意点があります。
- レコード更新時にテーブルのデータを含まない場合には、テーブルのデータは保持される。
- レコード更新時にテーブルのデータを含む場合には、リクエストに含まれないデータは更新されない。
これらの注意点を考慮し、さまざまなケースを紹介します。
準備:アプリとレコードの作成
固定リンクがコピーされました
次のようにフィールドを設定したアプリを作成しました。
「Text」と「Number」はテーブル内に配置します。
フィールド名 |
フィールドタイプ |
フィールドコード |
Table |
テーブル |
Table |
Text |
文字列(1行) |
Text |
Number |
数値 |
Number |
アプリを作成したら、次のようにレコードを1つ追加してください。
まずは1件のレコードを取得するAPIを使ってアプリのレコードを取得し、実際のレコードの値を確認してみましょう。
サンプルコードは次のリンクを参考にしてください。
1件のレコードを取得する
取得した結果は次のとおりです。
レコードの値は、JSON形式で取得できます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
{
"record": {
"レコード番号": {
"type": "RECORD_NUMBER",
"value": "3"
},
"Table": { // テーブルのフィールドコード
"type": "SUBTABLE",
"value": [ // 行のデータ
{
"id": "8204", // 行のID
"value": {
"Number": { // テーブル内のフィールドのフィールドコード
"type": "NUMBER", // テーブル内のフィールドのフィールドタイプ
"value": "1" // テーブル内のフィールドの値
},
"Text": {
"type": "SINGLE_LINE_TEXT",
"value": "TableText1"
}
}
},
{
"id": "8205",
"value": {
"Number": {
"type": "NUMBER",
"value": "2"
},
"Text": {
"type": "SINGLE_LINE_TEXT",
"value": "TableText2"
}
}
}
]
},
"更新者": {
"type": "MODIFIER",
"value": {
"code": "cybozu",
"name": "cybozu"
}
},
"作成者": {
"type": "CREATOR",
"value": {
"code": "cybozu",
"name": "cybozu"
}
},
"$revision": {
"type": "__REVISION__",
"value": "16"
},
"更新日時": {
"type": "UPDATED_TIME",
"value": "2025-07-10T11:42:00Z"
},
"作成日時": {
"type": "CREATED_TIME",
"value": "2025-07-10T09:44:00Z"
},
"$id": {
"type": "__ID__",
"value": "3"
}
}
}
|
その他フィールドの形式については次のリンクを参考にしてください。
フィールドの形式
では、1件のレコードを更新するAPIを使って、テーブルフィールドを更新してみましょう。
テーブルの最後に値を追加する
固定リンクがコピーされました
行を追加する場合、既存の行のIDをリクエストに含める必要があります。
サンプルコードは次のリンクを参考にしてください。
1件のレコードを更新する
行の各フィールドの値を更新しない場合は、次のように既存の行の値を省略できます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
{
"app": "115", // 更新するアプリのアプリID
"id": "3", // 更新するレコードID
"record": {
"Table": {
"value": [
{
"id": "8204" // 既存の行のID
},
{
"id": "8205" // 既存の行のID
},
{
"value": { // 追加する行の値
"Number": {
"value": "3"
},
"Text": {
"value": "追加するテキスト"
}
}
}
]
}
}
}
|
また、既存の行のIDを省略し、すでにテーブルにあった行の値をすべてリクエストに含めると、テーブルに値の追加ができます。
実際の挙動は「既存の行をすべて削除し、リクエストに含まれるデータをテーブルへ追加する」となります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
{
"app": "115", // 更新するアプリのアプリID
"id": "3", // 更新するレコードID
"record": {
"Table": {
"value": [ // 既存の行の値+追加する行の値
{
"value": {
"Text": {
"value": "TableText1"
},
"Number": {
"value": "1"
}
}
},
{
"value": {
"Text": {
"value": "TableText2"
},
"Number": {
"value": "2"
}
}
},
{
"value": {
"Number": {
"value": "3"
},
"Text": {
"value": "追加するテキスト"
}
}
}
]
}
}
}
|
更新した結果は次のとおりです。
テーブルの1行目に挿入する
固定リンクがコピーされました
挿入の場合にも、テーブルの行追加と同様の処理になります。
テーブルに表示したい順番でリクエストします。
行の各フィールドの値を更新しない場合は、先ほどと同様に既存の行の値を省略できます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
{
"app": "115", // 更新するアプリのアプリID
"id": "3", // 更新するレコードID
"record": {
"Table": {
"value": [
{
"value": { // 追加する行の値
"Number": {
"value": "0"
},
"Text": {
"value": "1行目に挿入する"
}
}
},
{
"id": "8204" // 既存の行のID
},
{
"id": "8205" // 既存の行のID
}
]
}
}
}
|
またこちらも同様に、既存の行のIDを省略し、すでにテーブルにあった行の値をすべてリクエストに含めると、テーブルに値の追加ができます。
実際の挙動は「既存の行をすべて削除し、リクエストに含まれるデータをテーブルへ追加する」となります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
{
"app": "115", // 更新するアプリのアプリID
"id": "3", // 更新するレコードID
"record": {
"Table": {
"value": [ // 追加する行の値+既存の行の値
{
"value": {
"Number": {
"value": "0"
},
"Text": {
"value": "1行目に挿入する"
}
}
},
{
"value": {
"Text": {
"value": "TableText1"
},
"Number": {
"value": "1"
}
}
},
{
"value": {
"Text": {
"value": "TableText2"
},
"Number": {
"value": "2"
}
}
}
]
}
}
}
|
挿入した結果は次のとおりです。
テーブルの1行の特定のフィールドのみを更新する
固定リンクがコピーされました
更新する行のIDを指定することで、その行の特定のフィールドのみを更新できます。
同じ行の他のフィールドを更新しない場合にはそのフィールドを省くことができます。
既存の行のIDを省略した場合、対象行は削除されます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
{
"app": "115", // 更新するアプリのアプリID
"id": "3", // 更新するレコードID
"record": {
"Table": {
"value": [
{
"id": "8204", // 更新する行ID
"value": {
"Text": {
"value": "特定のフィールドのみを更新する"
}
}
},
{
"id": "8205", // 更新する行ID
"value": {
"Number": {
"value": "200"
}
}
}
]
}
}
}
|
テーブルの1行の特定のフィールドのみを更新した結果は次のとおりです。
赤枠の部分のみが更新されています。
注意事項
存在しない行IDを指定した場合、エラーは出ず、新規追加として扱われます。
その際、テーブルに存在するがAPIで指定していない既存の行IDは削除されます。
補足:テーブルの内容をすべて削除する
Tableオブジェクト内のvalue配列を空にして指定し、更新することで削除できます。
1
2
3
4
5
6
7
8
9
|
{
"app": "115", // 更新するアプリのアプリID
"id": "3", // 更新するレコードID
"record": {
"Table": {
"value": []
}
}
}
|
結果は次のとおりです。
このようにテーブル更新のテクニックを理解するだけで、さまざまな利用シーンに活用できるかと思います。
ぜひ、お試しください。