# kintone.api GET 関数の中で画面のフィールドにセットできない。

**URL:** <https://community.cybozu.dev/t/topic/3510>\
**Category:** kintone 開発相談\
**Created:** [2018 年 11 月 7 日午前 9:48 UTC](https://community.cybozu.dev/t/topic/3510 "2018-11-07T09:48:19Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account885](https://avatars.discourse-cdn.com/v4/letter/l/46a35a/32.png) [@Legacy\_Account885](https://community.cybozu.dev/u/Legacy_Account885)\
**Post date:** [2018 年 11 月 7 日午前 9:48 UTC](https://community.cybozu.dev/t/topic/3510/1 "2018-11-07T09:48:19Z")

</div>

&nbsp;皆さん、こんにちは。はじめてKINTONEコミュニティに質問を投稿し、よろしくお願いします。

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

var events = [
'app.record.edit.change.都道府県',
'app.record.create.change.都道府県'
];
kintone.events.on(events, function(event) {
console.log(event);
var record = event.record;
if (!event.record) {
return event;
}
var todofuken = record.都道府県.value;
console.log(todofuken);
if(!todofuken){
return event;
}
var body = {
"app": 1258,
"fields": ["都道府県","送料"]
};
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body, function(resp) {
var records = resp.records;
console.log(records);
if(!records || !records.length){
resolve(event);
}
var soryo = 0;
var flag = true;
for(var i=0; i<records.length; i++){
var rs = records[i];
var arrKen = rs.都道府県.value;
for(var j=0; j<arrKen.length; j++){
if(arrKen[j] == todofuken){
soryo = rs.送料.value;
flag = false;
break;
}
if(!flag){
break;
}
}
}
console.log(soryo);
record['送料'].value = soryo;
});
return event;
});
})();

```

他のアプリからデータを取得して、でもKINTONE API GET関数の中で

```
record['送料'].value = soryo;

```

上のコードできません。教えていただけますでしょうか。

よろしくお願いします。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1740](https://avatars.discourse-cdn.com/v4/letter/l/ed8c4c/32.png) [@Legacy\_Account1740](https://community.cybozu.dev/u/Legacy_Account1740)\
**Post date:** [2018 年 11 月 8 日午前 3:36 UTC](https://community.cybozu.dev/t/topic/3510/2 "2018-11-08T03:36:50Z")

</div>

PHAM VAN TAM様

お世話になっております。  
cstapの江田と申します。

非同期処理であるkintone.api()が完了する前に、return event;が処理されてしまっているのだと思います。  
kintone.api()のコールバック関数の中で、「record[‘送料’].value = soryo;」の代入を行った後、「kintone.app.record.set(event);」を実行してレコードの書き換えをするとよいと思います。  
[https://developer.cybozu.io/hc/ja/articles/201942014#step4](https://developer.cybozu.io/hc/ja/articles/201942014#step4)

---

<div class="post-metadata">

**Author:** ![Legacy\_Account885](https://avatars.discourse-cdn.com/v4/letter/l/46a35a/32.png) [@Legacy\_Account885](https://community.cybozu.dev/u/Legacy_Account885)\
**Post date:** [2018 年 11 月 8 日午前 5:11 UTC](https://community.cybozu.dev/t/topic/3510/3 "2018-11-08T05:11:10Z")

</div>

江田さん、返事していただき、ありがとうございました。

送ってくれたリンクを拝見いたしましたが、

### 注意事項

- kintone.events.on のインベントハンドラ内で kintone.app.record.set および kintone.mobile.app.record.set を実行することはできません。

と書いてあります。

でも、自己問題は解決できました。

自分の問題は保存ボタンを押した際にレコードの都道府県の値を取得し、得た都道府県で検索条件として他のアプリから送料を取得、それから取得した送料を保存したいです。

解決したのは下の通りです。はじめてKINTONE環境でカスタマイズするから、なかなか難しいんだと感じる。

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

var events = [
'app.record.create.submit.success',
'app.record.edit.submit.success'
];
kintone.events.on(events, function(event) {
var recordId = event.recordId;
var record = event.record;
if (!event.record) {
return event;
}
var body = {
"app": 1258,
"fields": ["都道府県","送料"]
};
var soryo = 0;
var body2 = {
"app": kintone.app.getId(),
"id": recordId,
"record": {
"送料": {
"value": soryo
}
}
};
var todofuken = record.文字列 __1行__ 10.value;
if (!todofuken) {
return new kintone.Promise(function(resolve, reject) {
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body2, function() {
resolve(event);
});
});
return event;
}
return new kintone.Promise(function(resolve, reject) {
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body, function(resp) {
var records = resp.records;
if(!records || !records.length){
resolve(event);
}else{

var flag = true;
for(var i=0; i<records.length; i++){
var rs = records[i];
var arrKen = rs.都道府県.value;
for(var j=0; j<arrKen.length; j++){
if(arrKen[j] == todofuken){
soryo = rs.送料.value;
flag = false;
break;
}
if(!flag){
break;
}
}
}
var body3 = {
"app": kintone.app.getId(),
"id": recordId,
"record": {
"送料": {
"value": soryo
}
}
};
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body3, function() {
resolve(event);
});
}
});
});
return event;
});
})();

```

&nbsp;
