チェックが付いたサブテーブルを同一アプリ内のサブテーブルにコピー(自動行追加ができる形)

こちらのコードを参考に、サブテーブルを同一アプリ内のサブテーブルにコピーを行うことができるようになったのですが、

テーブルA⇒テーブルBへはコピーができるようになっていますが、行追加をしていても、テーブルBの1行目に上書きしてしまいます。

以下コードを必ず「1行追加した後」テーブルAのデータをコピーできるような仕様に変更したいです。ご助力賜れますと幸いです。

【参考にしたサイト】

https://developer.cybozu.io/hc/ja/community/posts/900001249043-%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%81%8C%E4%BB%98%E3%81%84%E3%81%9F%E3%82%B5%E3%83%96%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%92%E5%90%8C%E4%B8%80%E3%82%A2%E3%83%97%E3%83%AA%E5%86%85%E3%81%AE%E3%82%B5%E3%83%96%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC#_=_

【以下制作できている内容】

(function () {

    “use strict”;

 

    const events = [

       ‘mobile.app.record.create.change.決定’,

       ‘mobile.app.record.edit.change.決定’,

    ];

 

    kintone.events.on(events, function(event) {

       if (event.changes.field.value.length !== 0) {

 

          var table = event.record.決定内容.value;

           var name = event.changes.row.value.品名.value;

          var urine = event.changes.row.value.売値.value;

          var number = event.changes.row.value.品番2.value;

          var color = event.changes.row.value.色番.value;

          var cname = event.changes.row.value.色名.value;

          var Work = event.changes.row.value.仕入先.value;

 

      

           var newRow = {

             “value”: {

                “決定品名”: {“type”: “SINGLE_LINE_TEXT”, “value”: name},

                “決定売値”    : {“type”: “NUMBER”, “value”: urine},

                “決定品番”    : {“type”: “SINGLE_LINE_TEXT”, “value”: number},

                “決定色番”    : {“type”: “NUMBER”, “value”: color},

                “決定色名”    : {“type”: “SINGLE_LINE_TEXT”, “value”: cname},

                “決定仕入先”    : {“type”: “SINGLE_LINE_TEXT”, “value”: Work},

 

             }

          };

 

          table.push(newRow);

   

          for(var i = 0 ; i < table.length ; i ++){

                   

            if(table[i].value[‘決定品名’][‘value’] === undefined,

             table[i].value[‘決定売値’][‘value’] === undefined,

            table[i].value[‘決定品番’][‘value’] === undefined,

             table[i].value[‘決定色番’][‘value’] === undefined,

            table[i].value[‘決定色名’][‘value’] === undefined,

             table[i].value[‘決定仕入先’][‘value’] === undefined,

 

                    

          table.splice(i,1);

          

          }     

       

          return event;

 

       }

    });

 

 })();

Akihiro Kubo 様

こんにちは。

splice の動きを理解すれば、その内容であればだいたい解決するかと思います。

 

>以下コードを必ず「1行追加した後」テーブルAのデータをコピーできるような仕様に変更したいです。

ということですので、元のコードを添削させて頂いて。次のような形になるかと思います。

(function () {
  "use strict";
  const events = ["app.record.create.change.決定", "app.record.edit.change.決定"];

  kintone.events.on(events, function (event) {
    if (event.changes.field.value.length === 0) return event;
    const table = event.record.決定内容.value;
    const name = event.changes.row.value.品名.value;
    const urine = event.changes.row.value.売値.value;
    const number = event.changes.row.value.品番2.value;
    const color = event.changes.row.value.色番.value;
    const cname = event.changes.row.value.色名.value;
    const Work = event.changes.row.value.仕入先.value;

    const newRow = {
      value: {
        決定品名: { type: "SINGLE_LINE_TEXT", value: name },
        決定売値: { type: "NUMBER", value: urine },
        決定品番: { type: "SINGLE_LINE_TEXT", value: number },
        決定色番: { type: "NUMBER", value: color },
        決定色名: { type: "SINGLE_LINE_TEXT", value: cname },
        決定仕入先: { type: "SINGLE_LINE_TEXT", value: Work },
      },
    };
    table.splice(table.length, 0, newRow);
    return event;
  });
})();

table.splice の第一引数、第二引数の数字をif分等で制御するようにご自身で工夫をすれば、もう少し理想の形に近づくかと思います。