アプリ内 PUT更新

現在アプリ内更新機能の作成をしています。

レコードを保存時に「合計台数」と「会社名」を取得し、アプリ内のレコードで同じ「会社名」と「更新」コード(ドロップダウン)がある場合、「台数」に「合計台数」セットしたいと考えています。

作成をなんどか行いましたが、更新がされません。

どなたか詳しい方ご教授お願いします

 

 

(function() {
'use strict';
kintone.events.on('app.record.edit.submit', function(event) {
var record = event.record;
var appId=151;
kintone.api('/k/v1/records', 'GET',{
app : appId,
fields: ['合計台数','事業所'],
},

function() {
var record = kintone.app.record.get();
var total = record['record']['合計台数']['value'];
var office = record['record']['事業所']['value'];
var param = {
app:appId,
records:["台数"]
};

var query = 'プラン in ("機器更新手数料") '
query += 'and 事業所 = "'+office+'"';

kintone.api('/k/v1/records', 'GET', {app: appId, query: query}, function(resp) {

for (var i = 0; i < resp['records'].length; i++) {
param['records'][i] = {
"id":resp['records'][i]['レコード番号']['value'],
"台数":{
"value": total
},
};
}

kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', param, function(resp) {
return event;
}, function(error) {
console.log(param);
return event;
});
});
});
return event;
});
})();

こんにちは。

レコードを保存時に「合計台数」と「会社名」を取得し、

6行目に REST APIでレコード取得しているようですが、
保存するレコードの値を利用するのであれば、
イベント発生時のイベントオブジェクト内に入っている record が利用できます。(4行目で取得している値)

更新対象のレコード取得をした後にレコードを更新したい場合は Promise を使う必要があります。
今の書き方だと、レコード取得(GET)の処理終了を待たずに更新(PUT)の処理が走っている状況だと思います。

Promiseについては以下の記事が参考になるので見てみてください。

ご返信ありがとうございます。

こちらkintone.Promiseの使い方についてなどを参考に作成しました

return kintone.api(kintone.api.urlで取得後に更新をかけると解釈しています。

ですが更新が同様にされません。

なにが原因かわからない状況です。もしわかるのであればご教授お願いします。

(function() {
'use strict';
kintone.events.on('app.record.edit.submit', function(event) {
var record = event.record;
var appId=151;
return kintone.api(kintone.api.url('/k/v1/records',true), 'GET',
{app : appId,
fields: ['合計台数','事業所']},
function() {

var record = kintone.app.record.get();
var total = record['record']['合計台数']['value'];
var office = record['record']['事業所']['value'];
var param = {
app:appId,
records:["台数"]
};
var query = 'プラン in ("機器更新手数料") '
query += 'and 事業所 = "'+office+'"';

return kintone.api(kintone.api.url('/k/v1/records',true), 'GET', {app: appId, query: query}).then(function(resp) {

for (var i = 0; i < resp['records'].length; i++) {
alert(total);
param['records'][i] = {
"id":resp['records'][i]['レコード番号']['value'],
"台数":{
"value": total
},
};
}
kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', param, function(resp) {
return event;
}, function(error) {
console.log(param);
return event;
});
});
});
});
})();