# ボタン押下でのテーブルデータ追加

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

<div class="post-metadata">

**Author:** ![TS44](https://avatars.discourse-cdn.com/v4/letter/t/2bfe46/32.png) [@TS44](https://community.cybozu.dev/u/TS44)\
**Post date:** [2023 年 10 月 17 日午前 2:56 UTC](https://community.cybozu.dev/t/topic/8214/1 "2023-10-17T02:56:24Z")

</div>

お世話になります。初歩的な質問ですがご回答宜しくお願い致します。  
Aアプリに設置したボタンを押下すると、Bアプリのテーブルに追加されるようにしたいと考えております。  
※Bアプリに1レコードにデータを蓄積させたいと考えております。  
どの様に実現すればよいかご教示頂ければ幸いです。

 ![kintone](https://us1.discourse-cdn.com/flex015/uploads/cybozu/original/1X/38acc68c41d6c6fd0f4bfde3b4cdd0315bc5fbb6.png)

---

<div class="post-metadata">

**Author:** ![y\_minamitani9534](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/y_minamitani9534/32/462_2.png) [@y\_minamitani9534](https://community.cybozu.dev/u/y_minamitani9534)\
**Post date:** [2023 年 10 月 17 日午前 7:01 UTC](https://community.cybozu.dev/t/topic/8214/2 "2023-10-17T07:01:42Z")

</div>

@TS44 さん

こんにちは、簡単にですが思いついたので、一例をフローで書いてみますね。

Bアプリに反映するボタンを押したら、`kintone.app.record.get();`で今表示しているレコードの値を取得。  
↓  
Ｂレコードの対象のレコードの値をREST APIで取得(GET)する。  
↓  
（恐らく）Bアプリのテーブルの値を`for()`などでループさせて既に追加したもの か 新規追加するものか判断する。(Aアプリの追加対象のレコードのレコード番号をキーにして確認することを想定。なので`.map()`などを使う方が短くまとまりますね。)  
↓  
まだ追加していない新規のレコードだと`.push()`などで行追加、すでに追加していてば代入する形で値を更新。  
↓  
追加及び更新処理が終われば、BレコードにREST APIで更新(PUT)する。

みたいな形になるかなと想定してみました。  
Ａアプリのレコード番号をキーにすることを想定したので、BアプリのテーブルにもＡアプリのレコードのレコード番号を記録するフィールドを追加してあげるほうがいいかなと思います！

 ![38acc68c41d6c6fd0f4bfde3b4cdd0315bc5fbb6](https://us1.discourse-cdn.com/flex015/uploads/cybozu/original/1X/501488c4e4afba6f255f691941a527e53bed3435.png)

---

<div class="post-metadata">

**Author:** ![TS44](https://avatars.discourse-cdn.com/v4/letter/t/2bfe46/32.png) [@TS44](https://community.cybozu.dev/u/TS44)\
**Post date:** [2023 年 10 月 17 日午後 11:52 UTC](https://community.cybozu.dev/t/topic/8214/3 "2023-10-17T23:52:31Z")

</div>

ご回答誠にありがとうございます。  
初心者の為、簡単なコードを教えて頂ければ幸いです。

---

<div class="post-metadata">

**Author:** ![y\_minamitani9534](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/y_minamitani9534/32/462_2.png) [@y\_minamitani9534](https://community.cybozu.dev/u/y_minamitani9534)\
**Post date:** [2023 年 10 月 18 日午前 12:07 UTC](https://community.cybozu.dev/t/topic/8214/4 "2023-10-18T00:07:02Z")

</div>

ここは、有志の集まりで回答しているので時間のかかるコードをくださいは、初心者関係なくなかなか厳しいですよ 💦  
あと、人からもらったコードで構築しても恐らく後学にもならないと思いますし、恐らくビジネス上で自責の上で使っていると思いますが、他人が書いたコードを意味も分からず使用するのは危険だと思いませんか 😅  
言われている事を書こうと思えば、正直３０分もあれば皆さん構築できると思いいますが、せめて一度自身で試してみて、わからなければ試してみた事と自身で考えたコードを提示の上また質問してみてください。

> **[イントロダクション](https://cybozu.dev/ja/tutorials/hello-js/introduction/)**
>
> kintone や Garoon のカスタマイズにおいて JavaScript を学ぶ意義や、プログラムの動作の流れについて学びましょう。

> **[第1回 kintone JavaScript APIのイジりかた](https://cybozudev.zendesk.com/hc/ja/articles/201755040-%E7%AC%AC1%E5%9B%9E-kintone-JavaScript-API%E3%81%AE%E3%82%A4%E3%82%B8%E3%82%8A%E3%81%8B%E3%81%9F)**
>
> はじめて kintone をカスタマイズする人が kintone API の基礎知識を学べるよう、チュートリアルの内容を充実させてリニューアルしました。リニューアル後のチュートリアルは次のページを参照してください。はじめよう kintone API
> 
> （著者：落合 雄一）
> はじめに
> 「はじめようkintone JavaScript API」では、これからkintoneを自分好みに便利にカッコ...

---

<div class="post-metadata">

**Author:** ![TS44](https://avatars.discourse-cdn.com/v4/letter/t/2bfe46/32.png) [@TS44](https://community.cybozu.dev/u/TS44)\
**Post date:** [2023 年 10 月 18 日午前 12:19 UTC](https://community.cybozu.dev/t/topic/8214/5 "2023-10-18T00:19:48Z")

</div>

GetでAアプリのデータを取得する事は出来き、PUTで追加したメッセージは表示されるのですが、  
Bアプリにデータが反映されません。何か誤りがあれがご教示願います。

```javascript
let el1 = kintone.app.record.getSpaceElement('button1');
    $('<input />', {
      'type': 'button',
      'name': 'button1',
      'value': 'Bアプリへ',
      'class': 'create_button',
    }).on('click', function (resp) {
      
      const params = {
  			app: event.appId,
  			id: event.recordId
  		};
  
  		kintone.api(kintone.api.url('/k/v1/record.json', true), 'GET', params).then((resp) => {
  			console.log(resp);
  			
  			ID = event.recordId;
  			Name = resp.record.名前.value;
  PostCode = resp.record.郵便番号.value;
        Prefectures = resp.record.都道府県.value;
        Address1 = resp.record.住所1.value;
        Address2 = resp.record.住所2.value;
  		}).catch((error) => {
  			console.log(error);
  		});
  	
  		
  		var subTable = [];
      var params2 = {
      "app": 935,
      "id": 1,
      "Table": {"value": subTable}
      };
      
      subTable.push({
      value: {
        "ID": {value: ID, type: "SINGLE_LINE_TEXT"},
  "名前": {value: Name, type: "SINGLE_LINE_TEXT"},
        "郵便番号": {value: PostCode, type: "SINGLE_LINE_TEXT"},
        "都道府県": {value: Prefectures, type: "SINGLE_LINE_TEXT"},
        "住所1": {value: Address1, type: "SINGLE_LINE_TEXT"},
        "住所2": {value: Address2, type: "SINGLE_LINE_TEXT"},
      }
      });

  		return kintone.api(kintone.api.url('/k/v1/record.json', true), 'PUT', params2).then((resp) => {

  			alert('追加しました。');
  			return event;
  		}).catch((error) => {
  			// PUTエラー
  			console.log(error);
  			event.error = 'エラーが発生しました。';
  			return event;
      });
    }).appendTo(el1);

```

---

<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:** [2024 年 9 月 25 日午前 4:34 UTC](https://community.cybozu.dev/t/topic/8214/6 "2024-09-25T04:34:21Z")

</div>

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