お世話になります。
保存実行前イベントで3つの別アプリからデータを取得し値を書き変えようとしているのですが、変更が反映されるところと反映されないところがあります。
レコード登録時に連番を自動採番号する処理も動いていて、eventをreturnするタイミングを誤っているのだと思いますが、どのようにしたらうまく全てが反映されるのか、ご教授いただきたいです。
/* レコード追加画面の保存実行前のイベント */
/* レコード一覧画面のインライン編集の保存実行前イベント */
/* レコード編集画面の保存実行前のイベント */
var eventsShow2 = [‘app.record.create.submit’, ‘app.record.edit.submit’, ‘app.record.index.edit.submit’];
kintone.events.on(eventsShow2, function(event) {
var record = event.record;
var params = {
app: 15, // 別アプリA
query: ‘AAA ="’ + record[‘AAA’].value + ‘"’
};
kintone.api(‘/k/v1/records’, ‘GET’, params, function(resp) {
// 検索パラメータ
if (resp.records.length > 0) {
record[‘aaa’].value = resp.records[0][‘aaa’].value; ←これは反映される
}
// 検索パラメータ
var params2 = {
app: 22, // 別アプリB
query: ‘BBB ="’ + record[‘BBB’].value + ‘"’
};
kintone.api(‘/k/v1/records’, ‘GET’, params2, function(resp) {
if (resp.records.length > 0) {
record[‘bbb’].value = resp.records[0][‘bbb’].value; ←反映さない
}
// 検索パラメータ
var params3 = {
app: 24, // 別アプリC
query: ‘CCC ="’ + record[‘CCC’].value + ‘"’,
};
kintone.api(‘/k/v1/records’, ‘GET’, params3, function(resp) {
if (resp.records.length > 0) {
record[‘ccc’].value = resp.records[0][‘ccc’].value; ←反映さない
}
// アプリC取得エラー時
}, function(resp) {
// エラーの場合はメッセージを表示する
var errmsg = ‘エラーが発生しました。’;
// レスポンスにエラーメッセージが含まれる場合はメッセージを表示する
if (resp.message !== undefined) {
errmsg += ‘’ + resp.message;
}
alert(errmsg);
});
// アプリB取得エラー時
}, function(resp) {
// エラーの場合はメッセージを表示する
var errmsg = ‘エラーが発生しました。’;
// レスポンスにエラーメッセージが含まれる場合はメッセージを表示する
if (resp.message !== undefined) {
errmsg += ‘’ + resp.message;
}
alert(errmsg);
});
// アプリA取得エラー時
}, function(resp) {
// エラーの場合はメッセージを表示する
var errmsg = ‘エラーが発生しました。’;
// レスポンスにエラーメッセージが含まれる場合はメッセージを表示する
if (resp.message !== undefined) {
errmsg += ‘’ + resp.message;
}
alert(errmsg);
});
// 連番
// クエリ文の設定
var query = {
“app”: kintone.app.getId(),
“query”: ‘年月日 = "’ + record[‘年月日’].value + ‘" order by 連番 desc limit 1’,
};
//設定された日付から最新の番号を取得する
return kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, query).then(function(resp) {
var autoNo = ‘’;
var records = resp.records;
// 対象レコードがあった場合
if (records.length > 0) {
var rec = records[0];
var renban = rec[‘連番’].value;
var num = parseInt(renban, 10) + 1;
autoNo = ( ‘000’ + num ).slice( -3 );
// 対象レコードがなかった場合
} else {
autoNo = ‘001’;
}
// 連番を設定
event.record[‘連番’].value = autoNo; ←これは反映される
return event;
}).catch(function(e) {
alert("レコードの取得でエラーが発生しました getAutoNo - error: " + e.message);
return false;
});
}
return event;
});
よろしくお願いいたします。