プロセス管理で承認されたレコードは編集不可にする

超初心者で恐縮ですが、質問させていただきます。
タイトル通りなのですが、検索したところ、ジョイゾーさんがすでに公開してくれていた(大変助かります!)ので早速実装したのですが、保存ボタンをクリックしても反応しなくなりました。
https://www.joyzo.co.jp/blog/187

他のコードなども拝借しているので、実装方法には問題が無いと思うのですが、成功された方いらっしゃいましたら教えてください。

よろしくお願いします。

でん さん
cstapの瀧ヶ平です。

おそらく承認でないレコードの場合にapp.record.edit.submitのイベントハンドラー内でeventオブジェクトがreturnされていないことが原因のようです。

if (record['ステータス']['value'] === "承認"){
      event.error = "承認済みのデータは編集できません。";
      return event;
    }

if (record['ステータス']['value'] === "承認"){
      event.error = "承認済みのデータは編集できません。";
      return event;
    }
    return event;

とすれば解決すると思います。

瀧ヶ平様

早々にご回答ありがとうございます。
ご教示の通りコードを変更し、再度アップロードしてみましたが、やはり保存ボタンは反応しませんでした。
ステータスが承認だけでなく、他の状態でも同様です。

でんさん

eventをreturnしていないことが原因でないとするとほかの部分でJavaScriptのエラーが発生しているかもしれません。
よろしければ保存実行前イベント部分のコードをお見せいただいてもよろしいでしょうか?

瀧ヶ平様

保存実行前イベント部分とは、こちらのコードでよいのでしょうか?
kintone.events.on(‘app.record.edit.submit’, cancelSave);
})();

でんさん

その部分ではなく、canselSave関数の中身ですね。
わかりにくくてすいません

瀧ヶ平様

理解できずにすみません。こちらでしょうか?

function cancelSave(event) {
var record = event[‘record’];

if (record[‘ステータス’][‘value’] === “承認”){
event.error = “承認済みのデータは編集できません。”;
return event;
}
}

最初のご回答後は下記のようにしました。
function cancelSave(event) {
var record = event[‘record’];

if (record[‘ステータス’][‘value’] === “承認”){
event.error = “承認済みのデータは編集できません。”;
return event;
}
return event;
}

見る限りこのコードには問題がないようです。
他に動作しているJavaScriptがあればそちらが原因かもしれません

瀧ヶ平様

ご確認ありがとうございます。
コードに問題はないということは、アプリに他のJavaScriptは使用していませんので、アプリ側の問題かもしれませんね。
2つのアプリでテストしたのですが、実現できていません。単純なアプリを作成してテストしてみます。

横レス失礼します。

JSを使わない方法になりますが、レコードのアクセス権設定で、ステータスが最終承認状態の場合、everyoneの許可する操作を、"閲覧"のみにしても、同様の機能の実現ができるかも知れません。
この場合、保存させないというよりは、編集画面を開かせない。ですが。

上海レンユアー 松村様

ご回答ありがとうございます。
できました!
やりたいことはこれで十分です。承認者が編集できないなどどうしようかと思っていたのですが、この方法ですとその設定も可能なのでとても良いです。
ヘルプにありましたので載せておきます。
https://help.cybozu.com/ja/k/user/rights_example1.html

JavaScriptはくやしいので、引き続きテストしてみます。

はじめから作成したアプリでJavaScriptをテストしたところ、思った通りの挙動になりました。
最初にテストしていたアプリはアプリストアの備品購入申請を編集したものでした。

以上、テストの結果報告です。