# for文内でのREST API（GET)の記述について

**URL:** <https://community.cybozu.dev/t/topic/944>\
**Category:** kintone 開発相談\
**Created:** [2017 年 10 月 11 日午後 2:27 UTC](https://community.cybozu.dev/t/topic/944 "2017-10-11T14:27:45Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1936](https://avatars.discourse-cdn.com/v4/letter/l/7feea3/32.png) [@Legacy\_Account1936](https://community.cybozu.dev/u/Legacy_Account1936)\
**Post date:** [2017 年 10 月 11 日午後 2:27 UTC](https://community.cybozu.dev/t/topic/944/1 "2017-10-11T14:27:45Z")

</div>

for文内でGETをしているのですが、動作が思うように行きません。

Ａアプリのサブテーブルレコード（max50件）をfor文にて、１レコードずつＢアプリを検索（GET)し、該当データが存在すれば、Ｂアプリの該当レコードに更新します。

GET後、存在チェックを行い、function\_PUTへ飛ばしたいのですが、  
デバッグすると、①をレコード数分実行し、その間②はスキップされます。その後、forが終了してから、②をレコード数分実行しています。  
当然、引き渡したい配列の添字i はfor文の抜けた数字となっているため、配列が該当せずがエラーとなります。

同じような質問も見受けられたのですが、この方法ではできない or イベント処理内では可能等、と回答にバラつきがありましたので、質問させていただきました。  
for文は、kintone.events.onのプロセス管理の変更イベント内で記載しています。

* * *

for (var i = 0; i \< length; i++) {

&nbsp; &nbsp; var Query = “コード = "” + event.record[i].value[“コード”].value + “"” ; -①

&nbsp; &nbsp; var GET\_param = {‘app’: AppId,‘query’: Query};

&nbsp; &nbsp; kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, GET\_param).then(function(resp) {

&nbsp; &nbsp; &nbsp; &nbsp; //GET成功時 －②  
&nbsp; &nbsp; &nbsp; &nbsp; if (resp.records.length \> 0) {  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // レコード存在時には別関数にて「PUT」する  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function\_PUT(event, i, resp);  
&nbsp; &nbsp; &nbsp; &nbsp; } else {  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //該当データなし  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.log(resp.message);  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return event;  
&nbsp; &nbsp; &nbsp; &nbsp; }  
&nbsp; &nbsp; },function(resp) {  
&nbsp; &nbsp; &nbsp; &nbsp; //GET失敗時  
&nbsp; &nbsp; &nbsp; &nbsp; console.log(resp.message);  
&nbsp; &nbsp; &nbsp; &nbsp; return event;  
&nbsp; &nbsp; });  
}

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1574](https://avatars.discourse-cdn.com/v4/letter/l/76d3ee/32.png) [@Legacy\_Account1574](https://community.cybozu.dev/u/Legacy_Account1574)\
**Post date:** [2017 年 10 月 12 日午前 5:28 UTC](https://community.cybozu.dev/t/topic/944/2 "2017-10-12T05:28:33Z")

</div>

JavaScriptにおける非同期処理を繰り返し（順次）実行するには、Promiseとreduceを使ってやる必要があります。同様の内容が[この辺](https://community.cybozu.dev/hc/ja/community/posts/204669873)で触れられており本質は同じなので参考にトライされるとよろしいかと思います。
