レコードの取得、自動計算を含めた一括更新の方法について

kintone 1か月の初心者です。

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

 

 

上記図のような形で予実の分かる表を作成するアプリを作っています。

現状、名前はその場で入力、目標値、実績値はそれぞれ別アプリから取得

実績値合計と予実、達成率は取得した値を使って自動計算するようにしています。

 

目標値、実績値はPromise()を使って最後にイベントを返すようにしています。

 

ここで一人ずつ編集→保存とすれば値の更新をできるところまではできました。

しかし、メンバーがたくさんいる場合に全員分この作業をするのは手間になるため

一括で更新できる方法があればと思いました。

 

元々showイベントで最新情報が見られれば良かったのですが

Promiseが対応していないそうで、現在はedit/createイベントで計算させています。

 

https://developer.cybozu.io/hc/ja/articles/201883830-%E5%BE%8C%E3%81%A7%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%9F%E8%A8%88%E7%AE%97%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AB%E4%B8%80%E6%8B%AC%E3%81%A7%E5%80%A4%E3%82%92%E5%8F%8D%E6%98%A0%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95

 

上記を参考に更新処理を実施しようとしましたが、

更新日時は最新になっていることは確認しましたが

実績値など最新の情報を取ってきたり、計算されるような動きを

していませんでした。

空更新ではできないと思えばいいでしょうか?

 

一覧表示からボタンで一括更新もしくは

一人分のデータだけは編集→保存となってよいので
保存時に全員分を更新するといったことはできないでしょうか?

 

なにかいい方法や、以下のコードの考え方がそもそも違うよ

といったアイディアがあればぜひ教えてください。

 

↓ 作成中のソースコード(一部省略しています)

(function() {
"use strict";

//イベント処理
kintone.events.on(['app.record.create.submit','app.record.edit.submit','app.record.index.edit.submit'], function(event) {


// レコードの該当者
var name = event.record.ユーザー選択.value[0].name;
var name_code = event.record.ユーザー選択.value[0].code;
console.log(name);

var param = {"app": XX, 'query':'ユーザー選択 in ("' + name_code + '")'};

// 目標値アプリレコード
return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', param).then(function(goal_resp) {

// 売上管理アプリレコード
var goal_param = {"app" : YY, 'query':'担当者 in ("' + name_code + '")'};
return kintone.api('/k/v1/records', 'GET', goal_param).then(function(resp) {

var obj = resp.records;

// レコード単位
for (var j = 0; j < obj.length; j++) {
//レコード内テーブル単位
for(var k = 0; k < table_length; k++){

// 実績値1、実績値2を算出
}
}

event.record.実績1.value = key1;
event.record.実績2.value = key2;


// 目標値を設定
event.record.目標額.value = goal_resp.records[0][field_name].value;
console.log(event);


//ここにPUTを入れればいいのでしょうか?など考えてみましたが
エラーになりました。
(他の人が更新しましたエラー)


return event;
});
}).catch(function(){

event.error = 'レコード取得エラー';
return event;
});

});

})();