関連レコード一覧の件数を複数取得したい

指摘リスト(関連レコード一覧)から、頁名称が一致する件数とその内完了した件数を取得したいです。
それぞれ、javascriptを描いて取得できたのですが
項目(頁名称)が17項目あり それぞれ取得させたいです。クエリをまとめて書く方法はありますか?

下記の内容で、頁名称00a.表紙の件数は取得して、00a指摘数に格納できます。
同様に、頁名称が違うものが、16個あります。

(function() {
‘use strict’;
const events = [
‘app.record.edit.show’,
‘app.record.create.show’,
];
kintone.events.on(events, function(event) {
const appId = kintone.app.getRelatedRecordsTargetAppId(‘指摘リスト一覧’);
const query = ‘NS管理No="’ + event.record[‘NS管理No’].value +‘" and 頁名称DP in (“00a.表紙”)’;
const paramGET = {
‘app’ : appId,
‘query’ : query,
‘totalCount’ : true
};
kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, paramGET, (resp)=> {
event.record[‘_00a指摘数’].value = resp.totalCount;
kintone.app.record.set(event);
});
return event;
});
})();

処理を配列等に入れ、ループして実行する方法があります。
例えば

let relatedFields = [
  {
    fieldCode: '指摘リスト一覧',
    query: `NS管理No="${record['NS管理No'].value}" and 頁名称DP in ("00a.表紙")`
  },
  {
    // ...
  }
]

こういった配列をfunction(event)内で宣言し、ループさせればできると思います。
ただし、

event.record[‘_00a指摘数’].value = resp.totalCount;
kintone.app.record.set(event);

この部分は偶然動作しているだけで、他のカスタマイズが動作しなくなったり、同じような処理を複数にすると動作しなくなると思います(どれか1つしか値が入らないと思います)。正しく動作させるためには、kintone.apiの処理をPromiseにする、kintone.app.record.get()でレコードを取得するといった方法に変えなければならないでしょう。

また、仮に関連レコード一覧の設定を変えても問題ないようにするのであれば、フィールドを取得するAPIを実行して、必要な関連レコード一覧のproperties[‘フィールドコード’].referenceTableからクエリを作成する方法もあります。

1 Like

橋本様

ありがとうございます。
おっしゃる通り、関連レコード一覧の条件ごとの件数(00a.表紙など)をそれぞれ取得して条件ごとの指摘数フィールドに格納したいのです。

17項目ありまとめて記述する方法を検討しております。

その方法を提示したつもりでした。問題あったでしょうか。

オブジェクトの配列を宣言してループする処理のサンプルがあったので、参考になるかもしれません。

あるいは江田様が作ったクエリを書かずに集計できるコンストラクタを使えば、記述量が少なく済むので簡単に書けるかもしれません。

1 Like

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。