# create.changeイベント時、フィールドの値の更新ができない

**URL:** <https://community.cybozu.dev/t/topic/3458>\
**Category:** kintone 開発相談\
**Created:** [2018 年 10 月 18 日午前 1:33 UTC](https://community.cybozu.dev/t/topic/3458 "2018-10-18T01:33:35Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account860](https://avatars.discourse-cdn.com/v4/letter/l/7ea924/32.png) [@Legacy\_Account860](https://community.cybozu.dev/u/Legacy_Account860)\
**Post date:** [2018 年 10 月 18 日午前 1:33 UTC](https://community.cybozu.dev/t/topic/3458/1 "2018-10-18T01:33:35Z")

</div>

## サブテーブルのあるフィールドが変更されたとき、別アプリから値を取得して別のフィールドに値をセットしたいのですがうまくいきません。 値取得先のアプリは動的に変えたいのでルックアップは使用せずJavascriptで対応したくて以下のように書いてみました。 consoleのrecordにはgetRecordsで取得した顧客名が格納されていましたが、画面上のフィールドに値がセットされません。 どこを直せばよいのか、どなたかご教授のほどよろしくお願いいたしますm(\_ \_)m

(function() {  
“use strict”;

kintone.events.on([  
‘app.record.create.change.受付番号’  
], function(event) {  
var changes = event.changes;  
var tbl = event.record[‘Table’].value;  
var uketsukeNo = changes[‘row’].value[‘受付番号1’].value;  
var kokyakuName = changes[‘row’].value[‘顧客名’].value;  
var whereStr = ‘受付No = "’ + uketsukeNo + ‘"’;  
var appArray = { ‘業務名1’:1, ‘業務名2’:2, ‘業務名3’:3}; //アプリＩＤの連想配列  
var bukkenName;

## if (uketsukeNo){ kintoneUtility.rest.getRecords({‘app’:appArray[gyomuName],‘query’: whereStr}).then(function(result){ kokyakuName =result.records[0].顧客名.value; return new Promise(function (resolve, reject) { changes[‘row’].value[‘顧客名’].value = kokyakuName; console.log(‘1’); console.log(event); return resolve(); }); }).then(function(result){ console.log(‘2’); return event; }); } }); })();

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account860](https://avatars.discourse-cdn.com/v4/letter/l/7ea924/32.png) [@Legacy\_Account860](https://community.cybozu.dev/u/Legacy_Account860)\
**Post date:** [2018 年 10 月 18 日午前 1:45 UTC](https://community.cybozu.dev/t/topic/3458/2 "2018-10-18T01:45:29Z")

</div>

すみません、、、投稿したソースに誤りがありましたので訂正版を投稿します。

（gyomuName の宣言漏れと不要な変数がありましたので修正）

よろしくお願いします！

* * *

(function() {

“use strict”;

kintone.events.on([  
‘app.record.create.change.受付番号’  
], function(event) {  
var changes = event.changes;  
var tbl = event.record[‘Table’].value;  
var uketsukeNo = changes[‘row’].value[‘受付番号’].value;  
var gyomuName = changes[‘row’].value[‘業務名’].value;  
var whereStr = ‘受付No = "’ + uketsukeNo + ‘"’;  
var appArray = { ‘業務名1’:1, ‘業務名2’:2, ‘業務名3’:3}; //アプリＩＤの連想配列

if (uketsukeNo){  
kintoneUtility.rest.getRecords({‘app’:appArray[gyomuName],‘query’: whereStr}).then(function(result){  
kokyakuName =result.records[0].顧客名.value;  
return new Promise(function (resolve, reject) {  
changes[‘row’].value[‘顧客名’].value = kokyakuName;  
console.log(‘1’);  
console.log(event);  
return resolve();  
});  
}).then(function(result){  
console.log(‘2’);  
return event;  
});  
}  
});  
})();

---

<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:** [2018 年 10 月 18 日午前 7:05 UTC](https://community.cybozu.dev/t/topic/3458/3 "2018-10-18T07:05:35Z")

</div>

inada さん

change イベントは、promise 対応していません。

項目の更新は、API 完了後に kintone.app.record.get と kintone.app.record.set を使いましょう。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account860](https://avatars.discourse-cdn.com/v4/letter/l/7ea924/32.png) [@Legacy\_Account860](https://community.cybozu.dev/u/Legacy_Account860)\
**Post date:** [2018 年 10 月 18 日午前 7:19 UTC](https://community.cybozu.dev/t/topic/3458/4 "2018-10-18T07:19:11Z")

</div>

rex0220 さん

そうだったんですね・・・

勉強不足でした。

&nbsp;

ご回答ありがとうございます！

&nbsp;
