app.record.edit.changeを使って、値の再計算とレコードの更新を実施したい

kintone 約1か月です。

質問させていただきます。

 

レコード内のテーブルの内容を更新した場合に

その値を含めて特定の複数のレコードの内容を計算して、

更新を実施したいと思っています。

 

元々の作りはざっくりですが以下のような処理にしていました。

(function() {
"use strict";

kintone.events.on(['app.record.create.submit','app.record.edit.submit','app.record.index.edit.submit'], function (event){

//ある商品データのレコード

var get_param = {
app: XX,
query : 省略
};

// query条件に合ったレコードを取得
return kintone.api('/k/v1/records', 'GET', get_param).then(function(resp) {


//レコード単位
for(var i = 0; i < record.length; i++){

//テーブル単位
for(var k = 0; k < table.length; k++){

//とあるフィールドのデータを計算
//例:作成日が今月の売上データの値を加算する
}
}

return resp;

}).then(function(result){


// 売上合計値を格納するためのレコードを別途用意していて
// そのレコードに更新をかける
var params = {
app: kintone.app.getId(),
id: thismonth_id, // 変更したいレコードID
record: {
'単価': {
value: value
}
}
};

return kintone.api(kintone.api.url('/k/v1/record'), 'PUT', params).then(function(resp) {

console.log(resp);
return resp;

}).catch(function(){

event.error = '例外発生。';
return event;
});

});
})();

 

しかしこの方法だと、値をかえて保存しても

もともと保存されているレコードデータを使って計算するので

2回保存しないといけないことが分かりました。

 

そこでevent.onで

'app.record.edit.change.を使ってみたのですが

 Uncaught Error: app.record.edit.change.XX is not allowed to return "Thenable" object.

 

というエラーが発生してしまいます。

フィールドは「数値」を使っています。

 

何かお気づきの点がありましたらアドバイスよろしくお願いします。

また情報不足等ありましたらご指摘ください。

'app.record.edit.change"時のエラーですが

恐らくPromiseを返しているのでは?

changeイベントではPromiseは非対応です。

| changeイベント時のフィールド更新にはkintone.app.record.setを使用すれば解決するのではないでしょうか。 |

 

からに様

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

ご指摘の通りPromiseを返しておりました。

Promiseが使えたり使えなかったりまだまだ勉強が必要です。。

いろいろ処理を修正する必要があって、まだ想定の結果は得られていませんが

kintone.app,record.setでエラーも出なくなり、このまま進めていけば大丈夫そうなので

もう少し奮闘してみます。!

 

ありがとうございました。!