一覧画面で条件に応じたレコード件数を取得するテクニック

フォローする

(著者:Cstap 落合 雄一

はじめに

こんにちは。落合@cstapです。

一覧画面で現在のレコード件数を取得したいことがあるかと思います。例えば、以下のようにステータスが「処理中」のレコードの件数を常に表示させておきたい時などに便利です。

しかし、kintoneにはレコード件数を取得するAPIは用意されていません。レコード件数を取得するにはrecords.jsonを利用して100件ずつ取得して算出する方法と、DOMの文字列操作で取得する方法の2通りあります。今回は、records.jsonを利用して100件ずつ取得して算出する方法を紹介いたします。

ソース

取得したレコードの件数が100件未満になるまでKintoneRecordManagerのgetRecordsを呼び出しています。

最後に

今回、レコード件数の取得方法について説明いたしました。しかしこの方法では、レコード件数が多くなると取得に時間がかかり利用できない場合があるかと思います。その場合は、DOMの文字列操作で以下のキャプチャ部分から取得する方法もありますが、バージョンアップ時に動作しなくなる可能性がありお勧めできません。

早くkintoneにレコード件数を取得できるAPIが用意されると良いですね(^^♪

 

このTipsは、2014年6月版で確認したものになります。 

デモ環境

https://dev-demo.cybozu.com/k/73/

※デモ環境についての説明はこちら

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

Avatar
mikan

こちらですが、実装させていただいたところ、(すべて)の一覧表示でしか動作しなかったのですが、
任意で作成した一覧では動作しないような仕組みになっておりますでしょうか。

Avatar
落合 雄一

mikanさん
cstapの落合です。

通常の一覧であれば、動作する用になっているかと思います。
しかし現在は、REST API の records.json で totalCount を取得できるので、こちらを利用するほうが良いかと思います。

(function() {
  "use strict";

  // 一覧ページ
  kintone.events.on('app.record.index.show', function(event) {
    // 現在の検索条件&処理中のレコード取得
    var query = kintone.app.getQueryCondition();
    if (query === '') {
      query += ' status in ("処理中")';
    } else {
      query += ' and status in ("処理中")';
    }
    kintone.api('/k/v1/records', 'GET', {
      app: kintone.app.getId(),
      query: query,
      totalCount: true
    }, function(resp) {
      kintone.app.getHeaderMenuSpaceElement().innerHTML = '処理中のレコード件数:' + resp.totalCount;
    });
  });
})();

以上、参考になりますでしょうか?

Avatar
mikan

落合様

ありがとうございます。

バージョンアップか何かでTotalCountというものがサポートされるようになっているのですね。
参考にさせていただきます。

どうぞよろしくお願いいたします。

ログインしてコメントを残してください。
Powered by Zendesk