はじめに
kintone-rest-api-clientを利用した、全レコードの取得方法をご紹介します (^^)
デモ環境
デモ環境で実際に動作を確認できます。
https://dev-demo.cybozu.com/k/76/
ログイン情報は cybozu developer network デモ環境 で確認してください。
kintone-rest-api-client
kintone-rest-api-clientは、 kintone REST API を JavaScriptで扱う際に必要な処理をまとめたライブラリです。getAllRecordsメソッドは全レコードを一括で取得します。1万件以上のレコードを一括で取得する場合でも、offset の制限値を考慮する必要がありません。
kintone-rest-api-clientの詳しい使い方についてはこちらのページを参照ください。
利用方法
Javascript / CSSでカスタマイズ のページで下記URLを追加します。
例)バージョン3.2.1の場合
https://js.cybozu.com/kintone-rest-api-client/3.2.1/KintoneRestAPIClient.min.js
Cybozu CDN で公開しているバージョンは、こちらのページでご確認ください。
ソースコード
アプリIDの指定
サンプルでは、現在開いているアプリのID(kintone.app.getId())を渡しています。
別のアプリを指定したい場合は例えば以下のようにアプリIDを指定できます。
クエリで検索条件の指定
検索条件は以下のように指定します。
最後に
全レコード取得には、レコード数に比例して時間がかかってしまいます。
レコード取得のパフォーマンス改善についてはこちらのページをご参照ください。
データが残ってしまうので、
通信クラスで初期化するときに
としないと、Arrayが初期化されずに全てpushされる形になります。
菅原様
Arrayの初期化についてのご指摘ありがとうございます。ソースコードの32行目を修正いたしました。
1万件を越える場合、これも影響出ませんか?
向井様
はい、本記事の最上部に記載のとおり、こちらは offset を利用したレコード一括取得をしているため、取得結果が1万件を超える場合、offset の上限値にかかります。
1万件を越える可能性がある場合は、以下の記事を参考ください。
offset の制限値を考慮したレコード一括取得について
2023年2月21日追記
当記事は kintone-rest-api-client を使ったコードに書き換えました。
そのため、1万件以上のレコードを一括で取得する場合でも、offset の制限値を考慮する必要がありません。
cybozu Development team様
思いっ切りトップに書いてくださっていましたね。
大変失礼しました。