kintone(キントーン)の標準機能でできないところをJavaScriptやCSSを使って実現しています。
評価:5
今回はレコードが新規登録・追加なのか、更新なのかを判定する方法です。JavaScriptサンプルコードをご紹介します。
kintoneで登録か更新か判断できるのか
- レコードを登録した時に、他のアプリも同時に登録したい
- ある項目を変更した時に、他のアプリも同時に更新したい
- とにかくkintoneでも登録か更新かを判断したい
完成形
保存ボタンを押した後の保存成功後の処理で、レコードの新規登録・追加か更新かを判断して、アラートを表示しています。
- 登録か更新かは、レコードのリビジョン番号(revision)で判定
- 判定のタイミングは保存成功後の処理
「app.record.create.submit.success」
「app.record.edit.submit.success」
「app.record.index.edit.submit.success」
JavaScript サンプルコード
(function() {
"use strict";
/*
* 登録画面・編集画面・一覧画面/保存成功後
*/
function editSubmitSuccess(event) {
// レコード取得
var record = event.record;
if (record['$revision']['value'] > 1) {
// 更新の時($revision>1)
alert('更新の時:$revision = ' + record['$revision']['value']);
} else {
// 登録の時($revision=1)
alert('登録の時:$revision = ' + record['$revision']['value']);
}
return event;
}
/* ------------------------------------------------------------------ */
// 登録画面・編集画面・一覧画面/保存成功後
kintone.events.on(['app.record.create.submit.success',
'app.record.edit.submit.success',
'app.record.index.edit.submit.success'], editSubmitSuccess);
})();
kintoneでは、レコードの変更履歴をリビジョン番号(revision)で管理しています。保存成功後の処理で「$revision」の値を取得することにより、新規か更新かの判断ができます。新規の場合はリビジョン番号が「1」、更新の場合はリビジョン番号が「2以上」となります。
他のアプリではなく保存するレコード自体のある項目に何かをセットしたい時、以下の保存実行前イベント
「app.record.create.submit」
「app.record.edit.submit」
「app.record.index.edit.submit」
では、レコード追加の際にレコード番号やリビジョン番号を判定するとエラーになります。(更新時は取得可)
参考:保存成功後のレコード更新
「kintone.Promise」を使って、保存成功後の処理でレコード更新(自分自身)するサンプルが「cybozu developer network」に掲載されています。
レコード保存後イベントを使って自動採番をシンプルに実装する方法
こちらの方法で保存成功後の処理「app.record.xxxx.submit.success」で保存するレコード自体の更新を試してみました。同期更新するには「return」を書くことによって処理が終わるのを待って次の処理を行います。関数を呼び出す際にも「return」の記述が必要です。下記リンク「kintoneにおけるPromiseの書き方の基本」も参考になります。
[pz-linkcard-auto-replace url="https://cocojam.jp/everydaylife/kintone/1639"]