# \<更新が上手くいきません\>

**URL:** <https://community.cybozu.dev/t/topic/694>\
**Category:** kintone 開発相談\
**Created:** [2017 年 4 月 21 日午前 7:22 UTC](https://community.cybozu.dev/t/topic/694 "2017-04-21T07:22:08Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1655](https://avatars.discourse-cdn.com/v4/letter/l/54ee81/32.png) [@Legacy\_Account1655](https://community.cybozu.dev/u/Legacy_Account1655)\
**Post date:** [2017 年 4 月 21 日午前 7:22 UTC](https://community.cybozu.dev/t/topic/694/1 "2017-04-21T07:22:08Z")

</div>

**\<更新処理が上手くいきません\>**

エラーは出ないものの、更新後の処理が別画面に反映されません。

idの取得方法がコンソール上ではrecordInf.$id.valueで持ってこれましたが、

JSEdit内に記述した際は上手くいきませんでした。

見解的にidの取得方法に問題があると感じています。

どなたか、ご教授願います。

&nbsp;

以下、プログラミング内容です

var record = {  
“id”: recordInf[i][‘$id’][‘value’],  
“revision”: recordInf[i][‘$revision’][‘value’],  
“record” : {  
“日付\_1”:{“value”:recordInf.Table\_0.value[i].value.日付\_1.value},  
“日付\_2”:{“value”:recordInf.Table\_0.value[i].value.日付\_2.value},  
“ユーザー”:{“value”:recordInf.Table\_0.value[i].value.ユーザー選択.value},  
“数量”:{“value”:recordInf.Table\_0.value[i].value.数値\_1.value}  
}  
};  
params.records.push(record);  
}  
kintone.api(kintone.api.url(‘/k/v1/records’, true),‘PUT’, params).then(function(resp) {

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1517](https://avatars.discourse-cdn.com/v4/letter/l/4bbf92/32.png) [@Legacy\_Account1517](https://community.cybozu.dev/u/Legacy_Account1517)\
**Post date:** [2017 年 4 月 21 日午前 10:20 UTC](https://community.cybozu.dev/t/topic/694/2 "2017-04-21T10:20:53Z")

</div>

たいさん

機能説明無しで、コードの一部だけでは、問題がちぎれたクイズのようで、なかなかの難問です。  
たぶん、Aアプリ更新時に、Aアプリのテーブル行をBアプリの対応する各レコードに反映したいのではないかと思われます。

その前提で、処理を想像すると、 edit.submit.success イベント処理の一部ではないかと思われます。

・（Bアプリのレコード読み込み）  
・Bアプリの更新用レコード作成  
・Bアプリの更新API

この場合、Aアプリのテーブル行の追加・削除に対応する処理が結構面倒です。

“id”: recordInf[i][‘$id’][‘value’],  
“revision”: recordInf[i][‘$revision’][‘value’],

recordInf は、たぶん、Aアプリのレコードだと思われますので、  
Bアプリのレコードを読み込んだ変数を指定する必要があります。

また、添え字の[i]は、テーブル行と同じ位置ではなく、  
テーブル行の追加・削除を考慮して、テーブル行に該当するBアプリのレコード位置を指定する必要があります。

下記の部分は、そのままではAPI終了前にイベント処理が終了してしまいます。  
kintone.api(kintone.api.url(‘/k/v1/records’, true),‘PUT’, params).then(function(resp) {

↓

API処理終了時に、Promiseオブジェクト(event) を返すようにする必要があります。  
return kintone.api(kintone.api.url(‘/k/v1/records’, true),‘PUT’, params).then(function(resp) {  
…  
return event;  
}

想像の部分が多いので、的を外しているかもしれません。  
少なくともイベント処理全部のコードを上げたほうが的確なアドバイスが得られると思います。

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1655](https://avatars.discourse-cdn.com/v4/letter/l/54ee81/32.png) [@Legacy\_Account1655](https://community.cybozu.dev/u/Legacy_Account1655)\
**Post date:** [2017 年 4 月 24 日午前 4:21 UTC](https://community.cybozu.dev/t/topic/694/3 "2017-04-24T04:21:28Z")

</div>

rex0220さん

コメント有難う御座います。

&nbsp;

言葉足らずの質問で申し訳御座いません。

rex0220さんの仰る通り、アプリAの情報を更新した際にアプリBに反映するという仕様です。

&nbsp;

アプリAで、変更もしくは通知のステータスを設定した際に、

アプリBにレコードが存在しない場合は、アプリBに対し登録を行い、レコードが存在する場合は更新を行ないます。

&nbsp;

以下、プログラミング内容です

// アプリBに対し、レコードの更新を行なう  
caseInfo.update = function(recordInf) {  
// REST APIパラメータ  
var params = {  
// アプリBのアプリ番号  
“app”: caseInfo.APP\_ID,  
// 登録データ  
“records”: []  
};  
// テーブルの行分をループさせる  
var length = recordInf.Table\_0.value.length;  
for (var i = 0; i \< length; i++) {  
var record = {  
“id”: recordInf[i][‘$id’][‘value’],  
“revision”: recordInf[i][‘$revision’][‘value’],  
“record” : {  
“日付\_1”:{“value”:recordInf.Table\_0.value[i].value.日付\_1.value},  
“日付\_2”:{“value”:recordInf.Table\_0.value[i].value.日付\_2.value},  
“ユーザー”:{“value”:recordInf.Table\_0.value[i].value.ユーザー選択.value},  
“数量”:{“value”:recordInf.Table\_0.value[i].value.数値\_1.value}  
}  
};  
params.records.push(record);  
}  
kintone.api(kintone.api.url(‘/k/v1/records’, true),‘PUT’, params).then(function(resp) {  
// 成功時  
}, function(resp) {  
// 失敗時  
alert(“更新に失敗しました。”);  
});  
};

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1517](https://avatars.discourse-cdn.com/v4/letter/l/4bbf92/32.png) [@Legacy\_Account1517](https://community.cybozu.dev/u/Legacy_Account1517)\
**Post date:** [2017 年 4 月 24 日午前 4:36 UTC](https://community.cybozu.dev/t/topic/694/4 "2017-04-24T04:36:51Z")

</div>

上げていただいたコードも、イベント処理の一部ですので、前のアドバイス以上のことはありません。

もしかすると、（Bアプリのレコード読み込み）の処理も無いのでしょうか？

&nbsp;
