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

サブテーブルのあるフィールドが変更されたとき、別アプリから値を取得して別のフィールドに値をセットしたいのですがうまくいきません。
値取得先のアプリは動的に変えたいのでルックアップは使用せず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}; //アプリIDの連想配列
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;
});
}
});
})();

 

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

(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}; //アプリIDの連想配列

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;
});
}
});
})();

inada さん

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

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

rex0220 さん

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

勉強不足でした。

 

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