お世話になっております。
タイトルの件について、現在、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);});});
江田篤史様
ご教授いただいたように設定し、条件に合ったレコードごとの件数が取得できました。
ありがとうございます。
また、各レコードと紐づけについてのアドバイスもありがとうございます。
今後ともよろしくお願いいたします。