# テーブルに組み込んだidも別アプリに反映させたい

**URL:** <https://community.cybozu.dev/t/topic/5218>\
**Category:** kintone 開発相談\
**Created:** [2021 年 8 月 31 日午前 3:10 UTC](https://community.cybozu.dev/t/topic/5218 "2021-08-31T03:10:36Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account2783](https://avatars.discourse-cdn.com/v4/letter/l/f475e1/32.png) [@Legacy\_Account2783](https://community.cybozu.dev/u/Legacy_Account2783)\
**Post date:** [2021 年 8 月 31 日午前 3:10 UTC](https://community.cybozu.dev/t/topic/5218/1 "2021-08-31T03:10:36Z")

</div>

お世話になります。

以前[リンク](https://community.cybozu.dev/hc/ja/community/posts/4403039114265-%E5%88%A5%E3%82%A2%E3%83%97%E3%83%AA%E3%81%B8%E3%81%AE%E7%99%BB%E9%8C%B2%E5%BE%8C%E3%81%AB%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E8%A1%8C%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%E3%81%A8%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E5%87%BA%E3%82%8B)にてご相談させていただいた件で、うまくいったのですが、  
初回登録時のidは登録時に反映されていないことに今さらながら気づきました。

登録時  
ヘッダー含めテーブルを別アプリにPUT  
完了後、idをテーブル行に保存。  
となるためで、修正等の編集後は別アプリでもidが確認できることを確認済みです。

この初回登録時にidも別アプリに持っていくことは可能なのでしょうか？  
どのようにコードを更新すべきかご教授頂きたく、お願いします。

元のコード:

```
(function() {
"use strict";

kintone.events.on("app.record.create.submit.success", function(event) {
var postApp = 348; // 別アプリのID
var recId = event.recordId; // テーブルを登録したレコードを更新するためのID
var subTable = 'table1'; //サブテーブルのフィールドコード
var headers = [ //コピーするサブテーブル外のフィールドのフィールドコード
'From', 'To',
];

var record = event.record;

// レコードを更新するための値
var table = event.record.table1.value;
var array = [];

return kintone.api(kintone.api.url('/k/v1/records', true), 'POST', {
app: postApp,
records: event.record[subTable].value.map(function (row) {
headers.forEach(function (header) {
row.value[header] = event.record[header];
});
return row.value;
})
}).then(function(resp) {
// ↓↓↓↓↓↓↓↓↓↓↓↓登録が成功したレコードID をテーブルに登録するための処理
console.log(resp);
for (var i = 0; i < table.length; i++) {
array.push({
"id":table[i].id,
"value":{
"id": {
"value": resp.ids[i]
}
}
});
}

var body = {
"app": kintone.app.getId(),
"id": recId,
"record" :{
"table1":{
"value": array
}
}
};

return kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body).then(function(resp) {
// success
console.log(resp);

}, function(error) {
// error
console.log(error);
});
});
});

(function() {
"use strict";

kintone.events.on("app.record.create.submit.success", function(event) {
var postApp = 348; // 別アプリのID
var recId = event.recordId; // テーブルを登録したレコードを更新するためのID
var subTable = 'table1'; //サブテーブルのフィールドコード
var headers = [ //コピーするサブテーブル外のフィールドのフィールドコード
'From', 'To',
];

var record = event.record;

// レコードを更新するための値
var table = event.record.table1.value;
var array = [];

return kintone.api(kintone.api.url('/k/v1/records', true), 'POST', {
app: postApp,
records: event.record[subTable].value.map(function (row) {
headers.forEach(function (header) {
row.value[header] = event.record[header];
});
return row.value;
})
}).then(function(resp) {
// ↓↓↓↓↓↓↓↓↓↓↓↓登録が成功したレコードID をテーブルに登録するための処理
console.log(resp);
for (var i = 0; i < table.length; i++) {
array.push({
"id":table[i].id,
"value":{
"id": {
"value": resp.ids[i]
}
}
});
}

var body = {
"app": kintone.app.getId(),
"id": recId,
"record" :{
"table1":{
"value": array
}
}
};

return kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body).then(function(resp) {
// success
console.log(resp);

}, function(error) {
// error
console.log(error);
});
});
});

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account980](https://avatars.discourse-cdn.com/v4/letter/l/a183cd/32.png) [@Legacy\_Account980](https://community.cybozu.dev/u/Legacy_Account980)\
**Post date:** [2021 年 9 月 3 日午前 12:57 UTC](https://community.cybozu.dev/t/topic/5218/2 "2021-09-03T00:57:47Z")

</div>

こんにちは！

同じようなコードが2つ書かれていますが、前後の違いは何でしょうか？

今のコードが動かないということでしたら、  
どういう風に動かないか？  
どうしたいのか？（ゴールのイメージ）  
などを詳細に書いてくださると、回答しやすいかと思います。  
（アプリの様子を想像するのが難しいです。詳細が書かれていてもわからない可能性はありますが🙏💦）

・前後のコードの違いは何か？  
・エラーが出る場合はエラーの内容  
・どんなテーブルにどのアプリのどの値を入れたいのか  
・更新したいテーブルの構造（レコードIDだけ入れるためのテーブルでしょうか？）

などいただけると回答しやすいかと思います！

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2783](https://avatars.discourse-cdn.com/v4/letter/l/f475e1/32.png) [@Legacy\_Account2783](https://community.cybozu.dev/u/Legacy_Account2783)\
**Post date:** [2021 年 9 月 3 日午前 1:18 UTC](https://community.cybozu.dev/t/topic/5218/3 "2021-09-03T01:18:51Z")

</div>

juridonさん

こんにちは  
コードが2つコピーされていることに今さらながら気づきました。

やりたいことは、  
ヘッダー情報+テーブル情報  
を別アプリにコピーする、というものです。  
その際テーブルを1行ずつ分けて登録する、というものです。  
コピー先はテーブルではない予定です。

これまでの登録では保存時にidを振っていたので、別アプリには  
idが更新時にのみ登録されていました。  
そこを何とかできないか？と考えています。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account980](https://avatars.discourse-cdn.com/v4/letter/l/a183cd/32.png) [@Legacy\_Account980](https://community.cybozu.dev/u/Legacy_Account980)\
**Post date:** [2021 年 9 月 3 日午前 1:43 UTC](https://community.cybozu.dev/t/topic/5218/4 "2021-09-03T01:43:42Z")

</div>

なるほどです、テーブルの内容を1行ずつ別のアプリにPOST、PUTしたいという感じですね👀！  
idというのはレコードIDのことですね！

別アプリに複数レコードを一括POSTしたあと、IDが複数返ってくると思います。  
どの行とどのIDが結びつくかはちょっとわからないので（基本的に順番通りなのかもしれないですが💦）

IDが返ってきたら一旦その別アプリからGETして、その内容で自アプリをPUTで更新すると良さそうですね。  
コードを読んだ感じ流れは良いと思います（細かいところは読めてないですが💦）。

すると、多分ですが、テーブルの構造どおりに、bodyを正しく作れたらうまくいくかと思います。  
例えば↓のarrayはテーブルの行だと思うのですが、valueの他にtypeというプロパティも必要です。

```
array.push({
"id":table[i].id,
"value":{
"id": {
"value": resp.ids[i]
}
}
});
}

```

&nbsp;

このテーブルの構造のあたりは  
[はじめようJavaScript第16回 kintone JavaScriptカスタマイズのプログラム実例を学ぼう④（テーブル操作）](https://community.cybozu.dev/hc/ja/articles/360027244231)  
[レコード更新におけるテーブル操作のテクニック](https://community.cybozu.dev/hc/ja/articles/200752984-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E6%9B%B4%E6%96%B0%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E6%93%8D%E4%BD%9C%E3%81%AE%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF)

あたりが参考になると思います。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2783](https://avatars.discourse-cdn.com/v4/letter/l/f475e1/32.png) [@Legacy\_Account2783](https://community.cybozu.dev/u/Legacy_Account2783)\
**Post date:** [2021 年 9 月 3 日午前 6:30 UTC](https://community.cybozu.dev/t/topic/5218/5 "2021-09-03T06:30:00Z")

</div>

juridonさん

早速のご返信ありがとうございます。

```
for (var i = 0; i < table.length; i++) {
array.push({
"id":table[i].id,
"type": "SINGLE_LINE_TEXT",
"value":{
"id": {
"value": resp.ids[i]
}
}
});
}

```

にする形ですね。  
idは既存のレコード含め通し番号となります。

```
return kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body).then(function(resp) {
// success
console.log(resp);
//ここに記載する感じでしょうか？

}, function(error) {
// error
console.log(error);
});

```

上記に単純にvar recId = event.recordId;の部分をPUTもしくはPOSTする  
感じにはならないのでしょうか？

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

---

<div class="post-metadata">

**Author:** ![Legacy\_Account980](https://avatars.discourse-cdn.com/v4/letter/l/a183cd/32.png) [@Legacy\_Account980](https://community.cybozu.dev/u/Legacy_Account980)\
**Post date:** [2021 年 9 月 3 日午前 7:03 UTC](https://community.cybozu.dev/t/topic/5218/6 "2021-09-03T07:03:29Z")

</div>

↓typeを追加されていますが、そこではないです💦

```
array.push({
 "id":table[i].id,
 "type": "SINGLE_LINE_TEXT",
 "value":{
   "id": {
    "value": resp.ids[i]
   }
  }
});

```

\>上記に単純にvar recId = event.recordId;の部分をPUTもしくはPOSTする  
\>感じにはならないのでしょうか？

この行自体が、自分のアプリのレコードをPUT（更新）する行で、bodyの内容が正しければ、更新されるはずです。

```
return kintone.api(kintone.api.url('/k/v1/record',true),'PUT', body).then(function(resp) {

```

なのですが、なかなか説明も難しいので、

一旦、このアプリを触るのは置いておいて、新しく別にアプリを作るなどして  
↓是非こちらを試してテーブルの行追加や更新の練習されてみませんか？？ｵｽｽﾒです。  
[kintoneにおけるテーブル操作の基本（行の追加・更新・削除）](https://community.cybozu.dev/hc/ja/articles/360022502911-kintone%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E6%93%8D%E4%BD%9C%E3%81%AE%E5%9F%BA%E6%9C%AC-%E8%A1%8C%E3%81%AE%E8%BF%BD%E5%8A%A0-%E6%9B%B4%E6%96%B0-%E5%89%8A%E9%99%A4-)

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2783](https://avatars.discourse-cdn.com/v4/letter/l/f475e1/32.png) [@Legacy\_Account2783](https://community.cybozu.dev/u/Legacy_Account2783)\
**Post date:** [2021 年 9 月 6 日午前 4:53 UTC](https://community.cybozu.dev/t/topic/5218/7 "2021-09-06T04:53:46Z")

</div>

juridon様

助言いただいたもの、試したことあります。  
今回困っているのは、登録用のAアプリでの内容が確認用のBアプリに  
反映されていることは確認済み。  
その後Aアプリでidについても登録されていることは確認しておりますので、  
その点は問題有りません。

問題になっているのは、Bアプリではidが保存されず、更新時にのみ  
反映される点です。  
恐らく、レコード作成時、登録データにはid情報が含まれておらず、  
POST後にidが割り振られるのかなぁという感じなのですが…

---

<div class="post-metadata">

**Author:** ![Legacy\_Account980](https://avatars.discourse-cdn.com/v4/letter/l/a183cd/32.png) [@Legacy\_Account980](https://community.cybozu.dev/u/Legacy_Account980)\
**Post date:** [2021 年 9 月 6 日午前 5:14 UTC](https://community.cybozu.dev/t/topic/5218/8 "2021-09-06T05:14:35Z")

</div>

AのテーブルのIdって、Bのレコード番号という認識だったのですが違うのですね💦  
すみません。

---

<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:** [2025 年 10 月 1 日午前 1:04 UTC](https://community.cybozu.dev/t/topic/5218/9 "2025-10-01T01:04:41Z")

</div>

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