お世話になります。
今回は表題の通りjavascript APIを使用したサブテーブルの行追加で困っていることがあります。
解決方法ご教授お願い致します。
■関連フィールド
工事日程テーブル(サブテーブル)
以下工事日程テーブル内フィールド
工事開始日時(日時)
工事終了日時(日時)
当日担当者(ユーザー選択)
外注(ラジオボタン)
カレンダーID(数値)
■背景・実現したいこと
サブテーブルを1行ごとにチェックし、「工事開始日時」から「工事終了日時」までが24時間以上であれば日数のまたぎ分だけ行を追加していく。
例】工事開始日時:7/15 08:00 → 工事終了日時:7/17 17:00
1行目 工事開始日時:7/15 08:00 → 工事終了日時:7/15 17:00
2行目 工事開始日時:7/16 08:00 → 工事終了日時:7/16 17:00
3行目 工事開始日時:7/17 08:00 → 工事終了日時:7/17 17:00
■エラー内容
エラーは出ていませんがレコード保存後に書き換えた値が反映されません。
return event のまえに console.log で event.record の内容を確認していますがそこは問題なさそうです。(おそらく)
関係ないとは思いますが一応スペース内で作っているアプリです。
以下コード全文です。
解決方法など是非ご教授お願い致します。
(function() {
'use strict';
kintone.events.on(['app.record.create.submit','mobile.app.record.create.submit','app.record.edit.submit','mobile.app.record.edit.submit'], function(event) {
let table = event.record.工事日程テーブル.value;
event.record.工事日程テーブル.value = [];////サブテーブルを空に
table.forEach(row =>{
let start = moment(row.value.工事開始日時.value);
let end = moment(row.value.工事終了日時.value);
// let endTime = moment(row.value.工事終了日時.value).hour();
let diff = end.diff(start, 'hours');
let startDate = moment(row.value.工事開始日時.value).date();
end = end.date(startDate);
let managers = [];
row.value.当日担当者.value.forEach(val =>{
delete val.name;
managers.push(val);
});
if(diff >= 24){
let loopTimes = Math.floor(diff / 24);
for(let i = 0; i <= loopTimes; i++){
let startClone = start.clone();
let endClone = end.clone();
startClone = startClone.add(i, 'd');
endClone = endClone.add(i, 'd');
let pushRow = {
value:{
工事開始日時:{
type: 'DATETIME',
value: startClone.format("YYYY-MM-DDTHH:mm:ssZ")
},
工事終了日時:{
type:'DATETIME',
value: endClone.format("YYYY-MM-DDTHH:mm:ssZ")
},
当日担当者:{
type:'USER_SELECT',
value: managers
},
外注:{
type:'RADIO_BUTTON',
value:row.value.外注.value
},
カレンダーID:{
type:'NUMBER',
value:0
}
}
}
event.record.工事日程テーブル.value.push(pushRow);
}
}else{
let pushRow = {
value:{
工事開始日時:{
type: 'DATETIME',
value: start.format("YYYY-MM-DDTHH:mm:ssZ")
},
工事終了日時:{
type:'DATETIME',
value: end.format("YYYY-MM-DDTHH:mm:ssZ")
},
当日担当者:{
type:'USER_SELECT',
value: managers
},
外注:{
type:'RADIO_BUTTON',
value:row.value.外注.value
}
}
}
event.record.工事日程テーブル.value.push(pushRow);
}
});
console.log(event.record);
return event;
});
})();