一覧画面から100件以上のレコード値を取得する場合について

お世話になっております。

 

掲題の件、一覧画面に設置したボタン押下でレコードの数を取得し、取得したレコード数分、ループ処理でレコードの値を取得する処理を実装したく、

以下のようなコードを適用しましたがエラーで返ってきました。

=======================================================

(function() {
“use strict”;

//レコード一覧画面にボタンを配置
kintone.events.on(“app.record.index.show”, function(events) {

var menuButton_ck = document.createElement(“button”);
menuButton_ck.id = “menuButton_ck”;
menuButton_ck.innerHTML = “ボタン”;
menuButton_ck.style.margin = ‘0px 0px 20px 20px’;
menuButton_ck.style.padding = ‘15px’;

menuButton_ck.onclick = function() {

var count = new kintone.Promise(function(resolve, reject) {
// 現在の検索条件&処理中のレコード取得
var query = kintone.app.getQueryCondition();
if (query === ‘’) {
query += ’ レコード番号 != “”‘;
} else {
query += ’ and レコード番号 != “”’;
}
kintone.api(‘/k/v1/records’, ‘GET’, {
app: kintone.app.getId(),
query: query,
totalCount: true
}, function(resp) {
resolve(resp.totalCount);
});
});

return kintone.Promise.all([count]).then(function(results) {
var count = results[0];

window.alert(count + “件のレコードを取得しました。”);

for (var i = 0; i < count; i++ ) {
var record = events.records[i];

//注目
var app1 = record[‘注目’].value;
console.log(app1);
}

return event;
});
}

kintone.app.getHeaderSpaceElement().appendChild(menuButton_ck);

});
})();

=======================================================

当初、「events.records.length」でレコードを取得しておりましたが、それでは上限が100件ということに気づきkintone.Promiseを使用しました。

var count = results[0] の部分でレコード数は取得できているのですが、以下の部分でエラーとなっております。

========================

for (var i = 0; i < count; i++ ) {
var record = events.records[i];

//注目
var app1 = record[‘注目’].value;
console.log(app1);
}

========================

 

エラー内容は「Uncaught (in promise) TypeError: Cannot read property ‘注目’ of undefined」です。

 

kintone.Promiseを使用する際は

var record = events.records[i];

record[‘注目’].value;

 

といった記載方法はできないのでしょうか?

 

 

アドバイス等いただけると幸いです。

お手数ですが、よろしくお願いいたします。

y-kishiさん

いくつか勘違いされているようです。

・"app.record.index.show"は、Promise対応していません。

kintone イベント別Promiseサポート状況

エラーは、Promise対応していないのに Promise オブジェクトを返そうとしているためだと思います。

・events.records は、一覧表示行数

全レコード数分、events.records を処理しようとしていますが api でレコード取得しても events.records は変わりません。

なお、api で limit を指定しないと、取得レコードは 100 のままです。

limit で指定できる最大値は、500 です。それ以上のレコード取得が必要な場合はループ処理します。

全レコード取得

全レコード数の値だけ必要ならば、limit 1 を指定してレコード取得は最小限にします。

rex0220様

 

お世話になっております。

ご回答ありがとうございます。

 

「events.records は、一覧表示行数」という考えが抜けていたので

そもそも前提で無理なことをしていたのですね・・・

 

素直にapiで取得し処理します。

ありがとうございました。