REST APIの上限

にメンテナンス済み

kintone REST API で「上限」といえば、レコードの取得・作成・更新・削除だと思います。

アプリ単位のレコード数は使い方によっては増えやすいので、嫌でも目にすると思いますが、今回ご紹介するのは取得アプリ数の上限です。

アプリ情報取得 API(GET /k/v1/apps.json)は、1 度に取得できるアプリ数の上限が 100 件です(limit を省略した場合も 100 件)。取得開始位置は offset で指定します。

アプリ数が 100 件を超えると、それ以降のアプリは 1 回のリクエストでは取得できません。後から過去のプログラムをすべて見直すことにならないよう、最初から上限を意識せず取得できる関数を用意しておくと安心です。

今回は、全てのアプリ情報を取得するコードを紹介します。

ソースコード

const LIMIT = 100;

const getAllApps = async () => {
  const allApps = [];

  for (let offset = 0; ; offset += LIMIT) {
    const { apps } = await kintone.api(kintone.api.url('/k/v1/apps', true), 'GET', {
      limit: LIMIT,
      offset,
    });

    allApps.push(...apps);

    // 取得件数が上限に満たなければ、それが最後のページ
    if (apps.length < LIMIT) {
      return allApps;
    }
  }
};

解説

offset を 100 ずつ増やしながら取得を繰り返し、返ってきた件数が LIMIT 未満になった時点で終了します。再帰ではなくループで書いているため、アプリ数が多くても読みやすく、呼び出しスタックも増えません。

kintone.api.url の第 2 引数 true は、ゲストスペースのアプリも対象にできるよう、実行中の画面に応じて URL を切り替える指定です。

アプリ名やスペースで絞り込みたい場合は、name、spaceIds、codes などのパラメータも指定できます。詳細は cybozu developer network の「複数のアプリの情報を取得する」 を参照してください。

使用方法

呼び出す際に引数は必要ありません。

const apps = await getAllApps();

for (const app of apps) {
  console.log(app);
}
#JavaScript #kintone