ボタンが押されたときに同じアプリ内のサブテーブルにデータをコピーしたい

お世話になっております。
同じアプリ内に当月の請求情報と翌月以降の請求情報を入力するテーブルがあり、
アプリ内に配置したボタンが押されたら翌月以降の請求情報を当月の請求情報のテーブルにコピーしたいと考えております。

下記の記事を参考にボタンを押すとコピーが実行されるプログラムは作成できたのですがうまく動作しません。

ボタンを押すと新規レコードの場合はボタンを押すまでに入力していた項目が全て消えてしまい、サブテーブルの中身も空の1行になってしまいます。
既存レコードの場合は編集ボタンを押したときの情報がコピーされ、変更した値は反映されません。
金額を1,000から10,000にしても変更前の1,000が反映され10,000が1,000になります。

どのようにコードを変更すべきでしょうか?
アドバイス頂きたく、よろしくお願いいたします。

  kintone.events.on(["app.record.create.show", "app.record.edit.show"], function(event) {
      var record = event.record;
      
      ---------------------
          他の処理
      ---------------------

      var myIndexButton = document.createElement('button');
      myIndexButton.id = 'my_index_button';
      myIndexButton.innerText = '当月分へデータを反映';

      myIndexButton.onclick = function(){
         for( let i = 0 ; i < record.月額費用_翌月分_明細.value.length; i++){
            record.月額費用_当月分_明細.value.push({
               "value":{
                  "月額費用_当月分":{
                     "value":record.月額費用_翌月分_明細.value[i].value.月額費用_翌月分.value,
                     "type": "SINGLE_LINE_TEXT"
                   },
                   "請求額_当月分":{
                      "value":record.月額費用_翌月分_明細.value[i].value.請求額_翌月分.value,
                      "type": 'NUMBER'
                   },
                   "消費税_当月分":{
                      "value":record.月額費用_翌月分_明細.value[i].value.消費税_翌月分.value,
                      "type": 'CHECK_BOX'
                   },
                   "請求消費税_当月分":{
                      "value":record.月額費用_翌月分_明細.value[i].value.請求消費税_翌月分.value,
                      "type": 'CALC'
                   },
                   "請求合計_当月分":{
                      "value":record.月額費用_翌月分_明細.value[i].value.請求合計_翌月分.value,
                      "type": 'CALC'
                   },
                   "請求先名_当月分":{
                      "value":record.月額費用_翌月分_明細.value[i].value.請求先名_翌月分.value,
                      "type": 'SINGLE_LINE_TEXT'
                   },
                   "送金率_当月分":{
                      "value":record.月額費用_翌月分_明細.value[i].value.送金率_翌月分.value,
                      "type": 'RADIO_BUTTON'
                   },
                   "備考_当月分":{
                      "value":"",
                      "type": 'SINGLE_LINE_TEXT'
                   },
                   "日割り前の金額_当月分":{
                      "value":"",
                      "type": 'NUMBER'
                   },
                   "日割計算用":{
                      "value":"",
                      "type": 'NUMBER'
                   },
                   "日割計算用2":{
                      "value":"",
                      "type": 'NUMBER'
                   }
           }
       });
     }
   }
   record.月額費用_当月分_明細.value.splice(0, 1);
   kintone.app.record.set({record: record});
 }
 kintone.app.record.getSpaceElement('my_space_field').appendChild(myIndexButton);
 return event;
});
1 Like

kintoneのイベントハンドラで渡ってくるevent.recordを参照すると、提示されているコードの場合は、あくまで新規作成画面表示時点、および編集画面表示時点、ということになってしまいますね。

あくまでご自身で用意したボタンをクリックしたときの最新の情報が欲しい場合は、
kintone.app.record.get()を利用します(すでにsetは利用されてますが、そのget版があります)
その他にも問題があるかもしれませんが、まずこれは治す必要があります!

1 Like

mura様

お返事頂きありがとうございます。
アドバイスを頂いた通り、event.recordとは別にonclickイベントの中でkintone.app.record.get()でレコードを取得したところ想定通りの動きになりました。

ありがとうございます。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。