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

**URL:** <https://community.cybozu.dev/t/topic/968>\
**Category:** kintone 開発相談\
**Created:** [2017 年 10 月 27 日午前 9:28 UTC](https://community.cybozu.dev/t/topic/968 "2017-10-27T09:28:09Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1480](https://avatars.discourse-cdn.com/v4/letter/l/76d3ee/32.png) [@Legacy\_Account1480](https://community.cybozu.dev/u/Legacy_Account1480)\
**Post date:** [2017 年 10 月 27 日午前 9:28 UTC](https://community.cybozu.dev/t/topic/968/1 "2017-10-27T09:28:09Z")

</div>

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

タイトルの件について、現在、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)//テーブル内の状況項目のレコードの件数が取得出来ません。
            }
        }
    });
});

```

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

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

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1740](https://avatars.discourse-cdn.com/v4/letter/l/ed8c4c/32.png) [@Legacy\_Account1740](https://community.cybozu.dev/u/Legacy_Account1740)\
**Post date:** [2017 年 11 月 2 日午前 12:23 UTC](https://community.cybozu.dev/t/topic/968/2 "2017-11-02T00:23:22Z")

</div>

Nao様

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

cstapの江田です。

10行目の

```
var recTable = table[i];

```

を

```
var recTable = table[i].value;

```

としてみて下さい。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1480](https://avatars.discourse-cdn.com/v4/letter/l/76d3ee/32.png) [@Legacy\_Account1480](https://community.cybozu.dev/u/Legacy_Account1480)\
**Post date:** [2017 年 11 月 2 日午前 1:41 UTC](https://community.cybozu.dev/t/topic/968/3 "2017-11-02T01:41:24Z")

</div>

江田篤史 様

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

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

recTable.filter is not a function

&nbsp;

3行目の

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

```

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

Array [Object, Object, Object]

&nbsp;

11行目の

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

```

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

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

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

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

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

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1740](https://avatars.discourse-cdn.com/v4/letter/l/ed8c4c/32.png) [@Legacy\_Account1740](https://community.cybozu.dev/u/Legacy_Account1740)\
**Post date:** [2017 年 11 月 2 日午前 2:41 UTC](https://community.cybozu.dev/t/topic/968/4 "2017-11-02T02:41:46Z")

</div>

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);}});});

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1480](https://avatars.discourse-cdn.com/v4/letter/l/76d3ee/32.png) [@Legacy\_Account1480](https://community.cybozu.dev/u/Legacy_Account1480)\
**Post date:** [2017 年 11 月 2 日午前 4:42 UTC](https://community.cybozu.dev/t/topic/968/5 "2017-11-02T04:42:43Z")

</div>

江田篤史様

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

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

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

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

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

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1740](https://avatars.discourse-cdn.com/v4/letter/l/ed8c4c/32.png) [@Legacy\_Account1740](https://community.cybozu.dev/u/Legacy_Account1740)\
**Post date:** [2017 年 11 月 2 日午前 6:28 UTC](https://community.cybozu.dev/t/topic/968/6 "2017-11-02T06:28:46Z")

</div>

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);});});

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1480](https://avatars.discourse-cdn.com/v4/letter/l/76d3ee/32.png) [@Legacy\_Account1480](https://community.cybozu.dev/u/Legacy_Account1480)\
**Post date:** [2017 年 11 月 2 日午前 8:41 UTC](https://community.cybozu.dev/t/topic/968/7 "2017-11-02T08:41:53Z")

</div>

江田篤史様

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

ありがとうございます。

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

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