# グループの中にテーブルを入れる方法（複数）

**URL:** <https://community.cybozu.dev/t/topic/8217>\
**Category:** kintone 開発相談\
**Created:** [2023 年 10 月 18 日午前 2:22 UTC](https://community.cybozu.dev/t/topic/8217 "2023-10-18T02:22:20Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![TSo](https://avatars.discourse-cdn.com/v4/letter/t/e8c25b/32.png) [@TSo](https://community.cybozu.dev/u/TSo)\
**Post date:** [2023 年 10 月 18 日午前 2:22 UTC](https://community.cybozu.dev/t/topic/8217/1 "2023-10-18T02:22:20Z")

</div>

### 

複数のグループにスペースフィールドを配置し、そこに各グループに対応したテーブルを入れるカスタマイズを試みています。  
ひとまず成功したのですが、長ったらしいのでfor文を使おうとしたところ、設定が反映されませんでした。  
何かお気づきの点がございましたらご教授いただけませんでしょうか。

### 

・各テーブルのフィールドコード：  
Table1~12  
・各グループ内のスペース要素ID：  
TableSpace1~12  
・反映タイミング  
レコード追加時、レコード編集時

成功したコード

```javascript
(() => {
  'use strict';
  kintone.events.on([
    'app.record.index.show',
    'app.record.detail.show',
    'app.record.edit.submit'
    ], (event) => {
    const Table = ["Table1","Table2","Table3","Table4","Table5","Table6","Table7","Table8","Table9","Table10","Table11","Table12",];
    const TableSpace = ["TableSpace1","TableSpace2","TableSpace3","TableSpace4","TableSpace5","TableSpace6","TableSpace7","TableSpace8","TableSpace9","TableSpace10","TableSpace11","TableSpace12",];
    for (let i = 0; i < 12; i++) {
      const subtable = kintone.app.record.getFieldElement(Table[i]); // （）の中にサブテーブルフィールドコードを入れる
      kintone.app.record.getSpaceElement(TableSpace[i]).append(subtable); // getSpaceElement の（）の中にスペースフィールドコードを入れる
    }
  });
})();

```

エラーは出ないものの、設定が反映されないコード

```javascript
(() => {
  'use strict';
  kintone.events.on([
    'app.record.index.show',
    'app.record.detail.show',
    'app.record.edit.submit'
    ], (event) => {
    const Table = [];
    const TableSpace = [];
    for (let i = 1; i < 13; i++) {
      const sti = i.toString(); //iを文字列に変換
      Table.push(`Table${sti}`); //テーブル配列に要素を追加
      const subtable = kintone.app.record.getFieldElement(Table[i]); // （）の中にサブテーブルフィールドコードを入れる
      TableSpace.push(`TableSpace${sti}`); //スペース配列に要素を追加
      kintone.app.record.getSpaceElement(TableSpace[i]).append(subtable); // getSpaceElement の（）の中にスペースフィールドコードを入れる
    }
  });
})();

```

---

<div class="post-metadata">

**Author:** ![aaa](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/aaa/32/277_2.png) [@aaa](https://community.cybozu.dev/u/aaa)\
**Post date:** [2023 年 10 月 18 日午前 3:00 UTC](https://community.cybozu.dev/t/topic/8217/2 "2023-10-18T03:00:23Z")

</div>

質問者と同じ状態にできているのか不明ですが、  
こちらで試したら  
`Error: Usage: kintone.app.record.getFieldElement(fieldCode)`  
というエラーがでました。

```javascript
const subtable = kintone.app.record.getFieldElement(Table[i]); 

```

for文をはじめのコードは `i` が0始まりだったのに  
2番目のコードは `i` が1始まりだったからみたいなみたいなことのようです。

```javascript
(() => {
  'use strict';
  kintone.events.on([
    'app.record.detail.show',
    'app.record.edit.submit'
    ], (event) => {
    const Table = [];
    const TableSpace = [];
    for (let i = 1; i < 2; i++) {
      const sti = i.toString(); //iを文字列に変換
      Table.push(`Table${sti}`); //テーブル配列に要素を追加
      const subtable = kintone.app.record.getFieldElement(Table[i-1]); // （）の中にサブテーブルフィールドコードを入れる
      TableSpace.push(`TableSpace${sti}`); //スペース配列に要素を追加
      kintone.app.record.getSpaceElement(TableSpace[i-1]).append(subtable); // getSpaceElement の（）の中にスペースフィールドコードを入れる
    }
  });
})();

```

---

<div class="post-metadata">

**Author:** ![TSo](https://avatars.discourse-cdn.com/v4/letter/t/e8c25b/32.png) [@TSo](https://community.cybozu.dev/u/TSo)\
**Post date:** [2023 年 10 月 18 日午前 4:08 UTC](https://community.cybozu.dev/t/topic/8217/3 "2023-10-18T04:08:57Z")

</div>

ご指摘の通りi-1にしたところ、うまくいきました。  
配列はi=0からはじめないとうまくいかないということでしょうか…勉強不足と経験不足でわかりませんが、今後は意識してみることにします。  
ありがとうございました。

---

<div class="post-metadata">

**Author:** ![aaa](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/aaa/32/277_2.png) [@aaa](https://community.cybozu.dev/u/aaa)\
**Post date:** [2023 年 10 月 18 日午前 4:20 UTC](https://community.cybozu.dev/t/topic/8217/4 "2023-10-18T04:20:54Z")

</div>

1. 

すみません。はじめの回答に書き忘れました。

質問文で触れられていない

> [@TSo](#):
>
> `'app.record.index.show',`

このイベントは抜きました。

1. 

配列は0から始めないといけないか？  
JavaScriptではユーザー設定で簡単に変更できるような仕組みはなさそうです。  
Excel VBAなら  
`Option Base 1`  
という指定があります。  
Excelの場合A1から始まるのでそうした方が便利とか歴史的な理由があるかも知れません。

今回の例でいえば、初期化する時に

```javascript
 const Table = [undefined];

```

とダミー要素を入れておいて pushしていき、forのループ回数の上限を合わせれば  
いいかもしれません。  
だったら、はじめからTable0というフィールドコードにしておけばと思いますが

3）  
グループ | kintone ヘルプ

> **[グループ | kintone ヘルプ](https://jp.cybozu.help/k/ja/user/app_settings/form/form_parts/field_group.html)**
>
> kintoneのヘルプです。 kintoneを利用するために必要な設定や操作方法などを説明します。

を読むと  
標準機能ではグループにテーブルを入れられないのに入れると  
どのような副作用があるのかわかりませんでした。

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex015/uploads/cybozu/original/1X/d5c841c3c5a6cb66eed514001c1b45147c9e1f4f.png) [@system](https://community.cybozu.dev/u/system)\
**Post date:** [2023 年 10 月 21 日午前 4:21 UTC](https://community.cybozu.dev/t/topic/8217/5 "2023-10-21T04:21:44Z")

</div>

クローズされました: 2023 年 10 月 21 日午前 4:21 UTC

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