同一アプリ内にあるテーブルAに、テーブルBの値を各ボタンを押下した際にコピーしようと試みているのですが、いまいちキレイに実現してくれません。
長文になり申し訳ございませんが、お助けいただきますようお願い申し上げます。
テーブルA:内容
テーブルB:リスト外
※2つのテーブルのフィールドは一致していません。
※機器代と工事代でボタンを分けている理由は、テーブルBでは同じ行に入力されていますが、テーブルAでは同一フィールドにバラして入力するためです。
<現状の問題点>
①テーブルBの各フィールドの値や行追加・削除後にコピーボタンを押下すると、テーブルAに一度コピーはされるのですが、テーブルBが編集前の入力値にリセットされたり、追加した行が消えてしまいます。
➁機器代コピーボタン押下時は、機器代単価が0の行以外を、工事代コピーボタン押下時は、工事代単価が0の行以外をコピーしたいのですが、1回目のボタン押下時は、0の行以外のみをコピーしますが、いずれかのボタンを再度押下すると、機器代工事代問わず0の行もコピーされます。
エラーメッセージは、出ていません。
<実現したいこと>
①上記2点の問題解決
➁テーブルBからテーブルAにコピー後、テーブルAのルックアップフィールドの自動取得
<補足>
テーブルAには、別のテーブルCからプラグインを利用して、ルックアップ先のテーブルデータも展開しているため、テーブルAを都度クリアしての操作は避けたいです。
kintone.events.on (['app.record.create.show','app.record.edit.show'], (event) => {
const record = event.record;
const copyButton1 = document.createElement('button');
copyButton1.id = 'button_outListCopy1';
copyButton1.innerText = '機器代コピー';
const copyButton2 = document.createElement('button');
copyButton2.id = 'button_outListCopy2';
copyButton2.innerText = '工事代コピー';
if (document.getElementById('button_outListCopy1') !== null){
return;
}
if (document.getElementById('button_outListCopy2') !== null){
return;
}
copyButton1.onclick = () => {
const newRecord = kintone.app.record.get().record;
const contentsTable = record.内容.value;
const outListTable = newRecord.リスト外.value;
outListTable.forEach ((tableRow2) => {
contentsTable.push({
value:{
'内容_行':{
value: '',
type: 'NUMBER'
},
'内容_並び順':{
value: '',
type: 'NUMBER'
},
'内容_種別':{
value: '',
type: 'SINGLE_LINE_TEXT'
},
'内容_項目':{
value: tableRow2.value.リスト外_商品名.value,
type: 'SINGLE_LINE_TEXT'
},
'内容_数量':{
value: tableRow2.value.リスト外_数量.value,
type: 'NUMBER'
},
'内容_単位':{
value: '',
type: 'SINGLE_LINE_TEXT'
},
'内容_単価':{
value: tableRow2.value.リスト外_機器代単価.value,
type: 'NUMBER'
},
'内容_金額':{
value: '',
type: 'CALC'
},
'内容_実在庫数':{
value: '',
type: 'NUMBER'
},
'内容_型番':{
value: '',
type: 'SINGLE_LINE_TEXT'
},
'内容_商品No':{
value: '0',
type: 'NUMBER'
},
'内容_出庫登録':{
value: '',
type: 'SINGLE_LINE_TEXT'
},
}
});
if (tableRow2.value.リスト外_機器代単価.value > 1){
kintone.app.record.set({record: record});
}
});
}
copyButton2.onclick = () => {
const newRecord = kintone.app.record.get().record;
const contentsTable = record.内容.value;
const outListTable = newRecord.リスト外.value;
outListTable.forEach ((tableRow2) => {
contentsTable.push({
value:{
'内容_行':{
value: '',
type: 'NUMBER'
},
'内容_並び順':{
value: '',
type: 'NUMBER'
},
'内容_種別':{
value: '基本工事費',
type: 'SINGLE_LINE_TEXT'
},
'内容_項目':{
value: tableRow2.value.リスト外_商品名.value,
type: 'SINGLE_LINE_TEXT'
},
'内容_数量':{
value: tableRow2.value.リスト外_数量.value,
type: 'NUMBER'
},
'内容_単位':{
value: '',
type: 'SINGLE_LINE_TEXT'
},
'内容_単価':{
value: tableRow2.value.リスト外_工事代単価.value,
type: 'NUMBER'
},
'内容_金額':{
value: '',
type: 'CALC'
},
'内容_実在庫数':{
value: '',
type: 'NUMBER'
},
'内容_型番':{
value: '',
type: 'SINGLE_LINE_TEXT'
},
'内容_商品No':{
value: '0',
type: 'NUMBER'
},
'内容_出庫登録':{
value: '',
type: 'SINGLE_LINE_TEXT'
},
}
});
if (tableRow2.value.リスト外_工事代単価.value > 1){
kintone.app.record.set({record: record});
}
});
}
kintone.app.record.getSpaceElement('button_outListCopy1').appendChild(copyButton1);
kintone.app.record.getSpaceElement('button_outListCopy2').appendChild(copyButton2);
return event;
});