# Javascript APIで違うアプリのテーブルを更新するときのエラー

**URL:** <https://community.cybozu.dev/t/topic/198>\
**Category:** kintone 開発相談\
**Created:** [2017 年 1 月 13 日午前 3:33 UTC](https://community.cybozu.dev/t/topic/198 "2017-01-13T03:33:48Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1495](https://avatars.discourse-cdn.com/v4/letter/l/3e96dc/32.png) [@Legacy\_Account1495](https://community.cybozu.dev/u/Legacy_Account1495)\
**Post date:** [2017 年 1 月 13 日午前 3:33 UTC](https://community.cybozu.dev/t/topic/198/1 "2017-01-13T03:33:48Z")

</div>

受注表アプリで受注表を作成・保存したときに在庫マスターにある出入庫履歴のテーブルに対してアップデートを行うJavascriptを書いているのですが、書き込み自体は成功しているのに、console.logに出力される内容は失敗と表示されます。まだ始めたばかりで使い勝手がうまく飲み込めていないのですが、どこか間違っているのでしょうか？

実際には問題なくテーブルが更新されているので流れるデータは問題ないと思うのですが…

また、検索やテーブルアップデートに関してもう少し効率のいいやり方があればご教授ください

&nbsp;

kintone.events.on(“app.record.create.submit.success”,function(event){  
&nbsp;//サブテーブルから商品名を取得  
&nbsp;var tableRecords = event.record.order\_item\_table.value;  
&nbsp;var itemCode = tableRecords[0].value[‘Lookup’].value;

&nbsp;//商品名からレコードIDを取得  
&nbsp;var params = {  
&nbsp; “app”:24,//在庫マスターのアプリ  
&nbsp; “query”:‘itemCode = "’+itemCode+‘"’,  
&nbsp;};

&nbsp;//検索実行  
&nbsp;kintone.api(  
&nbsp; kintone.api.url(‘/k/v1/records’,true), //path or URL  
&nbsp; ‘GET’,//method  
&nbsp; params,//data  
&nbsp; function(resp){ //検索に成功した場合  
&nbsp; &nbsp;console.log(“Item find success”);  
&nbsp; &nbsp;var update\_id = parseInt(resp.records[0].$id.value);

&nbsp; &nbsp;//在庫  
&nbsp; &nbsp;var params = {  
&nbsp; &nbsp; “app”:24,  
&nbsp; &nbsp; “id”:1,  
&nbsp; &nbsp; “record”:{  
&nbsp; &nbsp; &nbsp; “Table\_0”:{  
&nbsp; &nbsp; &nbsp; &nbsp;“value”:[  
&nbsp; &nbsp; &nbsp; &nbsp; {  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; “value”:{  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;“order\_number”:{  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; “value”:“1”,  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;},  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;“Date\_0”:{  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; “value”:“2016-12-31”,  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;},  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;“item\_qty”:{  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;“value”:“20”  
&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;//Update実行  
&nbsp; &nbsp; &nbsp;kintone.api(  
&nbsp; &nbsp; &nbsp; &nbsp;kintone.api.url(‘/k/v1/record’,true), //path or URL  
&nbsp; &nbsp; &nbsp; &nbsp;‘PUT’,//method  
&nbsp; &nbsp; &nbsp; &nbsp;params,//data  
&nbsp; &nbsp; &nbsp; &nbsp;function(resp){//在庫マスターの入出庫テーブルのアップデートに成功  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;console.log(“Update Success”);//←こちらが表示されずに  
&nbsp; &nbsp; &nbsp; &nbsp;},  
&nbsp; &nbsp; &nbsp; &nbsp;function(resp){//在庫マスターの入出庫テーブルのアップデートに失敗  
&nbsp; &nbsp; &nbsp; &nbsp; console.log(“update fail”);//←これが出てしまう  
&nbsp; &nbsp; &nbsp; &nbsp; console.log(resp.message);//メッセージの内容は"Undefined"となっています。  
&nbsp; &nbsp; &nbsp; &nbsp;}  
&nbsp; &nbsp; &nbsp;);  
&nbsp; &nbsp; },function(resp){//検索に失敗した場合  
&nbsp; &nbsp;}  
&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 年 1 月 13 日午前 6:18 UTC](https://community.cybozu.dev/t/topic/198/2 "2017-01-13T06:18:28Z")

</div>

hide さん

エラーの原因は、非同期処理でAPIを行っており、そのAPI処理終了を待たずに、イベント処理が終了するためです。  
submit.success の場合は、イベント処理終了後に画面遷移してしまいますのでエラーが発生しやすいです。

対応としては、「[kintone API で Promise を使ってみよう！](https://community.cybozu.dev/hc/ja/articles/204564604)」にあるようにPromise 処理を使うことです。

Promise に関しては、下記に関連リンクをまとめていますので、よろしければ見てください。  
[http://qiita.com/rex0220/items/05ebd85e918eeb16e483#promise-%E9%96%A2%E9%80%A3](http://qiita.com/rex0220/items/05ebd85e918eeb16e483#promise-%E9%96%A2%E9%80%A3)

もう少し効率のいいやり方ですが、最近下記が公開されていますので、適用できそうでしたら検討してみてください。  
「kintone Utility for JavaScript を使ってみたよ」  
[http://qiita.com/kiku38/items/f903fcdf0c4e3d6ac1ab](http://qiita.com/kiku38/items/f903fcdf0c4e3d6ac1ab)

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1495](https://avatars.discourse-cdn.com/v4/letter/l/3e96dc/32.png) [@Legacy\_Account1495](https://community.cybozu.dev/u/Legacy_Account1495)\
**Post date:** [2017 年 1 月 17 日午前 4:15 UTC](https://community.cybozu.dev/t/topic/198/3 "2017-01-17T04:15:49Z")

</div>

rex0220 さん

&nbsp;

エラーの原因の解説ありがとうございます。

Promise処理を行ったところ正常に書き込みがされました。

ありがとうございます。

また、有用なリンクを教えていただき、ありがとうございます。  
これからもよろしくお願いします。
