お世話になっております。
レコードの参照数(閲覧数)を集計する目的として、
レコード詳細画面時に参照数フィールドをカウントアップする仕組み(下記ソース)を開発しております。
但し、apiを使用して更新処理は確認できておりますが、レコードの修正時、保存ボタンを押下した場合、
下記エラーが発生している状況となります。
エラー
レコードを再読み込みしてください。編集中に、ほかのユーザーがレコードを更新しました。
(GAIA_UN03 SQ9QtdxJLyrmvk47mZCW)
恐れ入りますが、対処策をご教示いただけないでしょうか?
(function() {
"use strict";
//詳細画面遷移時
kintone.events.on('app.record.detail.show', function(event) {
// 現在の参照数を取得し、カウントアップ
var record = event.record;
var nowpv = event["record"]["参照数"]["value"];
nowpv ++;
// 現在のレコードの参照数フィールドを更新する
var params = {
app: kintone.app.getId(),
id: kintone.app.record.getId(),
record: {
'参照数': {
'value': nowpv
}
}
};
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', params, function(resp) {
}, function(resp) {
// エラーの場合はメッセージを表示する
var errmsg = 'レコード更新時にエラーが発生しました。';
// レスポンスにエラーメッセージが含まれる場合はメッセージを表示する
if (resp.message !== undefined){
errmsg += resp.message;
}
alert(errmsg);
});
return event;
});
})();
ms様
お世話になっております.
詳細画面から編集画面に遷移する際に,一度ページをリロードさせると良いと思います.
(function() {
"use strict";
var updated = false;
//詳細画面遷移時
kintone.events.on('app.record.detail.show', function (event) {
// 現在の参照数を取得し、カウントアップ
var record = event.record;
var nowpv = event["record"]["参照数"]["value"];
nowpv++;
// 現在のレコードの参照数フィールドを更新する
var params = {
app: kintone.app.getId(),
id: kintone.app.record.getId(),
record: {
'参照数': {
'value': nowpv
}
}
};
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', params, function (resp) {
updated = true;
}, function (resp) {
// エラーの場合はメッセージを表示する
var errmsg = 'レコード更新時にエラーが発生しました。';
// レスポンスにエラーメッセージが含まれる場合はメッセージを表示する
if (resp.message !== undefined) {
errmsg += resp.message;
}
alert(errmsg);
});
return event;
});
//編集画面遷移時
kintone.events.on('app.record.edit.show', function (event) {
if(updated){
updated = false;
location.reload();
}
});
})();
ただし,編集中に別の人が詳細画面を閲覧した場合は保存できなくなります.
複数人が同時に閲覧することがよくある場合は,参照数は別アプリのレコードとして保存して,スペースフィールドなどに表示する方が良いかもしれません.
江田篤史 様
お世話になっております。
早急な回答ありがとうございます。
ご教示頂きましたソースにて、問題なく動作することが確認できました。
また、ご指摘いただきました複数人同時閲覧時の注意事項も踏まえまして、改めて検討させていただきます。
ご対応ありがとうございました。