改めて相談させてくださいませ。
現在、javascriptを利用して、以下の対応を取ろうと思っているのですが、あとすこしという所で思った動作になりません。
説明がうまくできず恐縮ではございますが、お知恵をお借りできませんでしょうか?
-現状-
1)請求書アプリを作成
※受注登録アプリから、特定の日付のレコード情報+テーブルごと取得
2)取得してきた受注データを、請求書レコードのサブテーブルに格納する
–
このときの、データを取得してきて、請求書アプリ上でのテーブル操作を行っているのですが、困っています。
取得してきたレコードを、請求書アプリのサブテーブルに格納する際に、
以下の様に実装しているのですが、なぜか、★の部分を走らせた際に、
サブテーブルの全ての項目の日付が変わってしまいます。
本来であれば、
納品日
2017-10-2
2017-10-3
2017-10-5
2017-10-7
2017-10-11
…
2017-10-31
というものを期待しているのですが、
納品日
2017-10-2
2017-10-31
2017-10-31
2017-10-31
2017-10-31
…
2017-10-31
となってしまいます。(何故か、1行目のサブテーブルだけ正しく、後は一番"最後の配列"の値が全サブテーブルに適用される。
コンソールで追いかけていると、★が走ったタイミングで、全てのサブテーブルの納品日が更新される(!?)
for (var h = 0; h < resp.totalCount ; h++) {
var orderrecord = resp.records[h].clientorder.value;
for (var i = 0; i < orderrecord.length; i++) {
★tableRecords[rc].value[‘納品日’].value = resp.records[h][‘納品日’].value;
tableRecords[rc].value[‘数量’].value = orderrecord[i].value[‘数量’].value;
tableRecords[rc].value[‘商品名’].value = orderrecord[i].value[‘商品名’].value;
tableRecords[rc].value[‘単価’].value = orderrecord[i].value[‘単価’].value;
tableRecords[rc].value[‘価格’].value = orderrecord[i].value[‘価格’].value;
tableRecords[rc].value[‘お客様名確認’].value = orderrecord[i].value[‘お客様名確認’].value;
rc = rc + 1 ;
□全コードは以下
(function() {
“use strict”;
var eventx = [“app.record.create.submit”];
kintone.events.on(eventx, function(event) {
var appId = 4;
var record = event.record;
var tableRecords = event.record.billingtable.value;
var rc = 0;
var start = event.record[‘集計開始日’].value;
var end = event.record[‘集計終了日’].value;
var clientname = event.record[‘お客様名’].value;
var queryString = ‘納品日 >= "’ + start + ‘" and 納品日 <= "’ + end + ‘" and お客様名 = "’ + clientname + ‘" order by 納品日 asc’;
var totalcountrecord = 0;
console.log(queryString);
return kintone.api(kintone.api.url(‘/k/v1/records’, true), “GET”, {
‘app’: appId,
‘totalCount’: true,
‘query’: queryString
}).then(function(resp) {
for (var f = 0; f < resp.totalCount; f++) {
totalcountrecord = totalcountrecord + resp.records[f].clientorder.value.length;
}
return resp;
}).then(function(resp) {
var newRow = {
id: null,
value: {
納品日: {
type: ‘DATE’,
value: ‘’
},
数量: {
type: ‘NUMBER’,
value: ‘’
},
商品名: {
type: ‘SINGLE_LINE_TEXT’,
value: ‘’
},
単価: {
type: ‘NUMBER’,
value: ‘’
},
価格: {
type: ‘NUMBER’,
value: ‘’
},
お客様名確認: {
type: ‘SINGLE_LINE_TEXT’,
value: ‘’
}
}
};
for (var g = 0; g < totalcountrecord; g++) {
record.billingtable.value.push(newRow);
}
return resp;
}).then(function(resp) {
for (var h = 0; h < resp.totalCount ; h++) {
var orderrecord = resp.records[h].clientorder.value;
for (var i = 0; i < orderrecord.length; i++) {
tableRecords[rc].value[‘納品日’].value = resp.records[h][‘納品日’].value;
tableRecords[rc].value[‘数量’].value = orderrecord[i].value[‘数量’].value;
tableRecords[rc].value[‘商品名’].value = orderrecord[i].value[‘商品名’].value;
tableRecords[rc].value[‘単価’].value = orderrecord[i].value[‘単価’].value;
tableRecords[rc].value[‘価格’].value = orderrecord[i].value[‘価格’].value;
tableRecords[rc].value[‘お客様名確認’].value = orderrecord[i].value[‘お客様名確認’].value;
rc = rc + 1 ;
}
}
return event;
});
});
})();