# kintone APIを使用して抽出したデータを変数に待避させたい。

**URL:** <https://community.cybozu.dev/t/topic/509>\
**Category:** kintone 開発相談\
**Created:** [2017 年 8 月 25 日午前 8:49 UTC](https://community.cybozu.dev/t/topic/509 "2017-08-25T08:49:44Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1862](https://avatars.discourse-cdn.com/v4/letter/l/58956e/32.png) [@Legacy\_Account1862](https://community.cybozu.dev/u/Legacy_Account1862)\
**Post date:** [2017 年 8 月 25 日午前 8:49 UTC](https://community.cybozu.dev/t/topic/509/1 "2017-08-25T08:49:44Z")

</div>

kintone APIを使用してデータを抽出し、その一部を変数に退避させて、別で使用したいと考えております。

kintone APIの範囲内では正しい値が取得できますが、  
kintone APIの範囲外で使用しようとするとundefinedと表示されます。

範囲外で値を使用する場合、何か考慮が必要でしょうか。

ご教授ください。

&nbsp;

現在のロジック：

//\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
// データチェック  
//\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
function CheckData(updateAppId,record){  
var result = 1;  
// リクエストパラメータ  
var requestParam = {  
‘app’: updateAppId,  
‘query’: "ID = " + record.ID.value  
};  
//更新先データ取得  
kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, requestParam, function(resp)  
{  
var records2 = resp.records;  
if (!records2 || !records2.length) {

result = 0;  
window.alert(result); --正しく表示  
}  
else  
{  
result = records2[0].レコード番号.value;  
window.alert(result); --正しく表示

}  
});  
window.alert(result); --undefinedが表示  
return result;  
}

---

<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 年 8 月 26 日午前 1:56 UTC](https://community.cybozu.dev/t/topic/509/2 "2017-08-26T01:56:17Z")

</div>

Toshihiro.M さん

kintone.api は、非同期処理で、処理を記述した順番では実行されません。

実行は、下記のようになります。

1. api 発行

kintone.api(…

1. api 発行後応答を待たずに、実行。まだデータは無い。

window.alert(result); --undefinedが表示  
return result;

※submit イベント等の場合は、return により、イベント処理が完了するため、画面遷移が起こる。

api の応答を待ちたい場合は、promise 処理にしましょう。

3.api 応答後（callback処理）

var records2 = resp.records  
…

ということで、APIの応答内容を使う処理は、api callback に記述するか、関数呼び出しにしてください。

また、必要に応じて[promise 処理](http://qiita.com/rex0220/items/05ebd85e918eeb16e483#promise-%E9%96%A2%E9%80%A3)にしましょう。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1862](https://avatars.discourse-cdn.com/v4/letter/l/58956e/32.png) [@Legacy\_Account1862](https://community.cybozu.dev/u/Legacy_Account1862)\
**Post date:** [2017 年 8 月 28 日午前 2:23 UTC](https://community.cybozu.dev/t/topic/509/3 "2017-08-28T02:23:57Z")

</div>

rex0220さん

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

非同期処理の件、理解できました。

promise 処理については、別途調べてみます。&nbsp;
