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

**URL:** <https://community.cybozu.dev/t/topic/6025>\
**Category:** kintone 開発相談\
**Created:** [2022 年 5 月 27 日午前 5:27 UTC](https://community.cybozu.dev/t/topic/6025 "2022-05-27T05:27:18Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account432](https://avatars.discourse-cdn.com/v4/letter/l/d07c76/32.png) [@Legacy\_Account432](https://community.cybozu.dev/u/Legacy_Account432)\
**Post date:** [2022 年 5 月 27 日午前 5:27 UTC](https://community.cybozu.dev/t/topic/6025/1 "2022-05-27T05:27:18Z")

</div>

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

テーブルA⇒テーブルBへはコピーができるようになっていますが、行追加をしていても、テーブルBの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#\_=\_](https://community.cybozu.dev/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&nbsp;()&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;“use&nbsp;strict”;

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;events&nbsp;=&nbsp;[

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;‘mobile.app.record.create.change.決定’,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;‘mobile.app.record.edit.change.決定’,

&nbsp;&nbsp;&nbsp;&nbsp;];

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;kintone.events.on(events,&nbsp;function(event)&nbsp;{

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

&nbsp;

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

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

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

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

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

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

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

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;newRow&nbsp;=&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;“value”:&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;“決定品名”:&nbsp;{“type”:&nbsp;“SINGLE\_LINE\_TEXT”,&nbsp;“value”:&nbsp;name},

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

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;“決定品番”&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;{“type”:&nbsp;“SINGLE\_LINE\_TEXT”,&nbsp;“value”:&nbsp;number},

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

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;“決定色名”&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;{“type”:&nbsp;“SINGLE\_LINE\_TEXT”,&nbsp;“value”:&nbsp;cname},

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;“決定仕入先”&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;{“type”:&nbsp;“SINGLE\_LINE\_TEXT”,&nbsp;“value”:&nbsp;Work},

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.push(newRow);

&nbsp;&nbsp;&nbsp;

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

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

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

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

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

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

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

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

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.splice(i,1);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;event;

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;});

&nbsp;

&nbsp;})();

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2476](https://avatars.discourse-cdn.com/v4/letter/l/c0e974/32.png) [@Legacy\_Account2476](https://community.cybozu.dev/u/Legacy_Account2476)\
**Post date:** [2022 年 5 月 30 日午前 4:26 UTC](https://community.cybozu.dev/t/topic/6025/2 "2022-05-30T04:26:22Z")

</div>

Akihiro Kubo 様

こんにちは。

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

&nbsp;

\>以下コードを必ず「１行追加した後」テーブル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分等で制御するようにご自身で工夫をすれば、もう少し理想の形に近づくかと思います。
