いつも大変お世話になっております。
一覧表示画面で表示されているレコード件数を取得する方法を教えてください。
「1 - 100 (100000 件中)」 ← この場合は『100000』という数値を取得したいのです。
Tipsやみなさまの投稿を拝読したところ、
getElementsByClassName(“component-app-listtable-countitem-count”)
はやめたほうが良さそうというところまでは認識しております。
どうぞよろしくお願いいたします。
いつも大変お世話になっております。
一覧表示画面で表示されているレコード件数を取得する方法を教えてください。
「1 - 100 (100000 件中)」 ← この場合は『100000』という数値を取得したいのです。
Tipsやみなさまの投稿を拝読したところ、
getElementsByClassName(“component-app-listtable-countitem-count”)
はやめたほうが良さそうというところまでは認識しております。
どうぞよろしくお願いいたします。
石井健太郎様
cstapの落合です。
現在kintoneにはレコード件数を取得するAPIは用意されておりません。
取得の方法は2つあります。
①REST APIで100件ずつ取得し、レコード件数を算出する
②<span class=“component-app-listtable-countitem-count”> (1007件中)</span>から文字列操作でレコード件数を取得する
①
・kintone.app.getQuery()で現在の検索クエリを取得
・kintone.api(‘/k/v1/records’, ‘GET’, {app: appId, query: 検索クエリ + " limit 100 offset " + offset, function(response) {レコード数カウント処理}}
・100件取得できなくなるまでoffsetを変更して繰り返す
といった感じでレコード数を算出することができます。
②についてはすでにご考察のようですが、kintoneのバージョンアップにより動かなくなる可能性があります。
いつでも修正出来る場合は②の方が簡単でしょう。
修正できない場合は、①をお勧めいたします。
落合さま
早々のご回答ありがとうございました。
ご助言に従い②の方法は避けておきます。
そこで①の方法なのですが、そもそも件数が知りたかったのは、100件ずつのoffsetを何回繰り返せば良いのか知りたかったからです。
従って、ご回答の中の「100件取得できなくなるまで」が把握できれば問題ありません。この判定方法を是非ご教示いただけると幸甚です。
何卒どうぞよろしくお願いいたします。
サンプルですが、下記のようなプログラムで参考になりますでしょうか?
「100件取得できなくなるまで」が、30行目のif (rn === l) になります。
(function() {
“use strict”;
/* レコード取得 */
var getRecords = function(limit, offset, successCallback) {
// アプリID
var appId = kintone.app.getId();
// 現在の検索クエリ取得
var currentQuery = kintone.app.getQueryCondition();
// データ取得
kintone.api('/k/v1/records', 'GET', {
app: appId,
query: "" + currentQuery + " limit " + limit + " offset " + offset
}, function(resp) {
successCallback(resp.records, limit, offset);
});
};
// 一覧ページ
kintone.events.on(‘app.record.index.show’, function(event) {
var limit = 100;
var apiCount = 0;
var successCallback = function(records, l, o) {
var rn = records.length;
var num = rn + o;
apiCount++;
if (rn === l) {
getRecords(l, num, successCallback);
}else{
var el = kintone.app.getHeaderMenuSpaceElement();
el.innerHTML = "件数:" + num + " 回数:" + apiCount;
}
};
getRecords(limit, 0, successCallback);
});
})();
やはり何度もREST APIに問い合わせを行うので、件数が増えると処理に時間がかかります。
前回の回答の②は処理時間は短いので、それぞれメリット・デメリット考慮の上ご判断ください。
落合さま
ありがとうございます。
ここまで大変なソースになるとは想像しておりませんでした。
気軽にお願いしてしまい申し訳ございませんでした。
すぐには理解できなさそうですが時間をかけて咀嚼してまいります。
お忙しい中お時間を割いていただきありがとうございました。
前回の回答の②は処理時間は短いので、それぞれメリット・デメリット考慮の上ご判断ください。
かしこまりました。
ご助言に従いケースバイケースで考えてまいる所存です。
今後ともなにとぞどうぞよろしくお願いいたします。
石井健太郎様
またわからないことがあればお気軽にご質問ください(^^)
レコード一括取得の考え方について現在では以下が最新の情報となっております。
また、サイボウズが開発・提供している@kintone/rest-api-client の getAllRecords を使うと便利です。
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。