101件以上のサブテーブル行追加

Aアプリに入力された値を元にBアプリのレコード情報をGETしてサブテーブルに反映させようとしています。

Bアプリの該当レコードが100件以下の場合は思ったとおりに動作するのですが、101件を超えた分の情報が取れない為エラーになってしまいます。

全件レコード取得でコードを修正するのかな?という所までは思いついたのですが、全くの初心者のためどこから修正するのか思いつきません。

以下、現在のコードです。サブテーブルの項目が多いので省略しています。

(function(){
“use strict”;

moment.locale(‘ja’);

kintone.events.on(“app.record.create.submit”,function(event){
var billMonth, record, clientcode, appId;
//BアプリID
appId = 133;
record =event.record;
billMonth = record[“請求月”].value;
clientcode = record[“請求先名コード”].value;

return kintone.api(kintone.api.url(‘/k/v1/records’, true), “GET”,{
app: appId,
totalCount: true,
fields: [“作業開始日時”,
“手配番号”,
“注文番号1”,
“設置先名”
],
query:‘請求月 = "’ + tuki + ‘" and 請求先名コード = "’ + clientcode + ‘" order by 作業開始日時 asc’
}).then(function(res){
record[“件数”].value = res.totalCount;
event.record.table.value = [];
for(var i = 0; i < res.totalCount; i++){
var subRow = {
value:{
番号:{
type:‘NUMBER’,
value:i+1
},
作業日:{
type:‘DATE’,
value:moment(res.records[i].作業開始日時.value).format(‘YYYY-MM-DD’)
},
手配番号:{
type:‘SINGLE_LINE_TEXT’,
value:res.records[i].手配番号.value
},
注文番号1:{
type:‘SINGLE_LINE_TEXT’,
value:res.records[i].注文番号1.value
},
設置先名:{
type:‘SINGLE_LINE_TEXT’,
value:res.records[i].設置先名.value
}
}
};
event.record.table.value.push(subRow);
}
return event;
});
});
})();

ご教示の程、何卒よろしくお願いいたします。

oka-y さん

レコードの一括取得APIは、queryパラメータに limit オプションがあり、規定値が 100 になっており、

limit を指定しないと 100 レコードの取得です。

limit の上限値は 500 となっており、最大 500 以下のレコード数であれば、limit オプションの指定で済みます。

500 以上のレコードの場合は、Promiseを利用したモダンなアプリの全レコード取得の書き方 が参考になります。

また、kintone Utility Library for JavaScript を使うと便利です。

「kintone Utility Library for JavaScript」の使い方

どれを使うかは、対象アプリの要件で判断してください。

rex0220様

私は「limit省略時の初期値は100」の記載を見落としていたんですね。

取得件数が500レコードを超えることは無いので、クエリの追記だけで済みそうです。

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