カスタマイズビューでサブテーブルの値の取得及び集計表示について

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

タイトルの件について、現在、kintone Utility for JavaScriptでクエリ条件に合う全レコード取得した後、カスタマイズビューに表示しようと思っています。

サブテーブル以外のフィールドは取得、集計表示が出来たのですが、サブテーブルが出来ない状況となっております。

恐らくサブテーブルは配列になっているからだと思っているのですが、どのように設定すれば良いかわからずです。

現在は下記のようなコードで設定しております。

kintone.events.on("app.record.index.show", function (event) {
    kintoneUtility.rest.getAllRecordsByQuery(param).then(function(resp) {
        aaa = resp.records.filter(function(data){ return data.状況.value === "完了";}).length;
        console.log(aaa)//状況項目で完了となっているレコードの件数が取得出来ています。
        var records = resp["records"];
        for (var i = 0; i < records.length; i++) {
            var record = records[i];
            var table = record.テーブル.value;
            for (var i = 0; i < table.length; i++) {
                var recTable = table[i];
                bbb = recTable.filter(function(data){ return data.状況.value === "完了";}).length;
                console.log(bbb)//テーブル内の状況項目のレコードの件数が取得出来ません。
            }
        }
    });
});

お手数でございますが、ご教授いただければ幸いでございます。

よろしくお願いいたします。

 

Nao様

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

cstapの江田です。

10行目の

var recTable = table[i];

var recTable = table[i].value;

としてみて下さい。

江田篤史 様

ご返信ありがとうございます。

ご教授いただいたように設定しましたが、やはりダメで、下記のようなエラーメッセージが出来ました。

recTable.filter is not a function

 

3行目の

aaa = resp.records.filter(function(data){ return data.状況.value === "完了";}).length;

resp.recordsの場合は、下記のような配列状態で取得しているのですが、

Array [Object, Object, Object]

 

11行目の

bbb = recTable.filter(function(data){ return data.状況.value === "完了";}).length;

recTableの場合は、下記のような状態で取得されています。

Object { テスト: Object, 状況: Object, 区分: Object }
Object { テスト: Object, 状況: Object, 区分: Object }
Object { テスト: Object, 状況: Object, 区分: Object }

.filter時点でエラーメッセージが出るということは、取得した値が配列になっていない為なのでしょうか?

度々お手数でございますが、ご確認、ご教授いただければ幸いです。

よろしくお願いいたします。

 

Nao様

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

なるほど。左様でしたら、こちらで試していただいても宜しいですか?

kintone.events.on("app.record.index.show",function(event){kintoneUtility.rest.getAllRecordsByQuery(param).then(function(resp){aaa=resp.records.filter(function(data){returndata.状況.value==="完了";}).length;console.log(aaa)//状況項目で完了となっているレコードの件数が取得出来ています。varrecords=resp["records"];for(vari=0;i\<records.length;i++){varrecord=records[i];vartable=record.テーブル.value;varbbb=table.filter(function(data){returndata.value.状況.value==="完了";}).length;console.log(bbb);}});});

江田篤史様

ご返信ありがとうございます。

ご教授いただいたように設定すると、レコード1件分のテーブルの値を取得できました。

これを全てのレコードの値で取得したい場合は、どのように行えばよろしいでしょうか。

度々恐縮でございますが、ご教授いただければ幸いです。

よろしくお願いいたします。

Nao様

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

bbbを配列にして値を格納するのが良いと思います。

bbbの使い方にもよりますが、配列のキーには「record.$id.value」等を指定して各レコードと紐づけておくと恐らく使い勝手が良いかと思います。

kintone.events.on("app.record.index.show",function(event){kintoneUtility.rest.getAllRecordsByQuery(param).then(function(resp){varaaa=resp.records.filter(function(data){returndata.状況.value==="完了";}).length;console.log(aaa)//状況項目で完了となっているレコードの件数が取得出来ています。varrecords=resp["records"];varbbb=[];for(vari=0;i\<records.length;i++){varrecord=records[i];vartable=record.Table.value;bbb[record.$id.value]=table.filter(function(data){returndata.value.状況2.value==="完了";}).length;}console.log(bbb);});});

江田篤史様

ご教授いただいたように設定し、条件に合ったレコードごとの件数が取得できました。

ありがとうございます。

また、各レコードと紐づけについてのアドバイスもありがとうございます。

今後ともよろしくお願いいたします。