サブテーブルの最終行に数値の合計行を一時的に追加するプラグインについて

お世話になります。

サブテーブルの最終行に数値の合計行を一時的に追加するプラグインを作成しております。

このプラグインはレコードの追加または編集する際にボタンを押すことで実行するもので、作成した合計行は別のプラグインでエクセルに出力した後に削除する予定です。

サブテーブルに合計行を追加することはできたのですが、プラグインの実行ボタンを追加した段階で、追加した合計行がサブテーブルに表示しなくなってしまいました。

JavaScriptに初挑戦のため初歩的なミスかもしれませんが、ご教授いただけますと幸いです。

よろしくお願いいたします。

(() => {
'use strict';  
    kintone.events.on(['app.record.create.show', 'app.record.edit.show'], event => {
     // メニューの上側の空白部分にボタンを設置
    const myIndexButton = document.createElement('button');
    myIndexButton.id = 'my_index_button';
    myIndexButton.innerText = 'テーブルに合計行を追加';
  myIndexButton.onclick = () => {      
     let record = event.record; 
   let row = record.テーブル.value.length; //テーブル(テーブル名:table)の行数を取得する
     let total_kingaku = 0;//合計金額の変数
     for(let  i =0; i <row;i++){ //テーブル行数を繰り返す
       let mo = parseInt(record.テーブル.value[i].value.数値.value);//金額をIntに変換する
       total_kingaku += mo; //金額を加算する
      }
     let test = record.テーブル.value[0].value.数値.value;//テーブルのデータを取得
     alert('テーブルの行数: ' + row); //テーブルの行数を確認
     const addText = total_kingaku;
     
     // 行追加
     record.テーブル.value.push({
      value: {
        '数値': {
          value: addText,
          type: 'NUMBER',
         },
       }
     });
     
     alert('合計: '+ record.テーブル.value[row].value.数値.value);//合計金額を確認
    return event;
    };
    kintone.app.record.getHeaderMenuSpaceElement().appendChild(myIndexButton);
});    
})();

 

    myIndexButton.onclick = () => {      
     let record = event.record; 
   let row = record.テーブル.value.length; //テーブル(テーブル名:table)の行数を取得する

// 略
return event;

ここに問題があるようです。以下のようにする必要があります。

    myIndexButton.onclick = () => {      
   let recordData = kintone.app.record.get(), record = recordData.record;
   let row = record.テーブル.value.length; //テーブル(テーブル名:table)の行数を取得する

     // 略
kintone.app.record.set(recordData);
};

    kintone.app.record.getHeaderMenuSpaceElement().appendChild(myIndexButton);
return event;

 

この辺りの分かりやすい解説は苦手なんですが、ボタンのクリックイベント(ボタンを押した時)とcreate.showやedit.showのイベント(レコードを開いた瞬間)は違うタイミングで発生しているので、ボタンのクリックイベント内でevent(レコードを開いた瞬間の値)を参照したり書き換えたりすることはできません。その場合はレコードの値の取得レコードに値をセット を使用する必要があります。

mls-hashimoto様、コメントいただきましてありがとうございます。

教えていただいた内容に変更した結果、無事に動作することができました。

本当にありがとうございました。

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