複数アプリのレコード操作を一括処理する

目次

複数アプリへのレコード一括処理をする

複数のアプリに対して、同時に複数のAPIを実行します。

URL

通常のアプリ
https://sample.cybozu.com/k/v1/bulkRequest.json
ゲストスペースのアプリ
https://sample.cybozu.com/k/guest/GUEST_SPACE_ID/v1/bulkRequest.json

同じゲストスペース内のアプリに対してのみ、一括処理できます。
そのため、次の処理は実行できません。

  • ゲストスペース内のアプリと、別のゲストスペース内のアプリを一括で更新する。
  • ゲストスペース内のアプリと、スペース内のアプリを一括で更新する。
  • ゲストスペース内のアプリと、通常のアプリを一括で更新する。

HTTPメソッド

POST

必要なアクセス権

  • 実行するAPIの必要なアクセス権

リクエスト

パラメーター
パラメーター名 必須 説明
requests 配列 必須 実行するAPIの一覧
最大で20件のリクエストを指定できます。
requests[].method 文字列 必須 実行するAPIのHTTPメソッド
requests[].api 文字列 必須 実行するAPIのURL
requests[].payload オブジェクト 必須 実行するAPIに渡すリクエストボディ
リクエストの例
ヘッダー
1
2
3
4
{
  "X-Cybozu-API-Token": "API_TOKEN",
  "Content-Type": "application/json"
}

リクエストヘッダーの詳細は共通仕様を参照してください。
kintone REST APIの共通仕様

ボディ
 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
{
  "requests": [
    {
      "method": "POST",
      "api": "/k/v1/record.json",
      "payload": {
        "app": 1972,
        "record": {
          "文字列1行": {
            "value": "文字列1行を追加します。"
          }
        }
      }
    },
    {
      "method": "PUT",
      "api": "/k/v1/record.json",
      "payload": {
        "app": 1973,
        "id": 33,
        "revision": 2,
        "record": {
          "文字列1行": {
            "value": "文字列1行を更新します。"
          }
        }
      }
    },
    {
      "method": "POST",
      "api": "/k/v1/record.json",
      "payload": {
        "app": 1974,
        "record": {
          "文字列1行": {
            "value": "文字列1行を追加します。"
          }
        }
      }
    }
  ]
}

レスポンス

プロパティ
プロパティ名 説明
results 配列 各APIリクエストに対するレスポンス
要素の並び順は、リクエストパラメーターのrequests配列の並び順と同じです。
いずれかのAPIで処理が失敗すると、失敗したAPIに対応する要素には、エラーの結果が入ります。
それ以外の要素には{}(空のオブジェクト)が入ります。
レスポンスの例
成功したとき
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{
  "results": [
    {
      "id": "39",
      "revision": "1"
    },
    {
      "revision": "3"
    },
    {
      "id": "39",
      "revision": "1"
    }
  ]
}
失敗したとき

リクエストの例における2つ目のPUTリクエストで、更新するidがない場合にエラーとなる例です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{
  "results": [
    {},
    {
      "message": "指定したレコード(id: 33)が見つかりません。",
      "id": "1505999166-1940353231",
      "code": "GAIA_RE01"
    },
    {}
  ]
}

サンプルコード

curlを使ったリクエスト
 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
curl -X POST 'https://sample.cybozu.com/k/v1/bulkRequest.json' \
  -H 'X-Cybozu-API-Token:3gdqwhk8uWTOAvKamh1jGaZGWrgIYLo5t4AXzvZy,02mfxTztsESIDudntNWhIiF092A3h63jTU0ZbVg7' \
  -H 'Content-Type: application/json' \
  -d '{
    "requests": [
      {
        "method": "POST",
        "api": "/k/v1/record.json",
        "payload": {
          "app": 1972,
          "record": {
            "文字列1行": {
              "value": "文字列1行を追加します。"
            }
          }
        }
      },
      {
        "method": "PUT",
        "api": "/k/v1/record.json",
        "payload": {
          "app": 1973,
          "id": 33,
          "revision": 2,
          "record": {
            "文字列1行": {
              "value": "文字列1行を更新します。"
            }
          }
        }
      },
      {
        "method": "POST",
        "api": "/k/v1/record.json",
          "payload": {
          "app": 1974,
          "record": {
            "文字列1行": {
              "value": "文字列1行を追加します。"
            }
          }
        }
      }
    ]
  }'
kintone.api()を使ったリクエスト

kintone.api()の詳細は、次のページを参照してください。
kintone REST APIリクエストを送信する

 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
const body = {
  requests: [
    {
      method: 'POST',
      api: '/k/v1/record.json',
      payload: {
        app: 1972,
        record: {
          文字列1行: {
            value: '文字列1行を追加します。'
          }
        }
      }
    },
    {
      method: 'PUT',
      api: '/k/v1/record.json',
      payload: {
        app: 1973,
        id: 33,
        revision: 2,
        record: {
          文字列1行: {
            value: '文字列1行を更新します。'
          }
        }
      }
    },
    {
      method: 'POST',
      api: '/k/v1/record.json',
      payload: {
        app: 1974,
        record: {
          文字列1行: {
            value: '文字列1行を追加します。'
          }
        }
      }
    }
  ]
};

await kintone.api(kintone.api.url('/k/v1/bulkRequest.json', true), 'POST', body);