いつもお世話になっております。
このように、このテーブルを管理者のみで記入できるようにしたいです(このアプリに他のユーザーが入力する項目もあります)が、テーブルに対しての権限は基本機能ではできないので、なにか方法はありますでしょうか?アドバイスいただければ幸いです。よろしくお願い致します。
いつもお世話になっております。
このように、このテーブルを管理者のみで記入できるようにしたいです(このアプリに他のユーザーが入力する項目もあります)が、テーブルに対しての権限は基本機能ではできないので、なにか方法はありますでしょうか?アドバイスいただければ幸いです。よろしくお願い致します。
玲香さん、こんにちは。
テーブル内のフィールドに対してフィールドのアクセス権は設定できないので、ユーザーの権限チェックを含めてJavaScriptでカスタマイズするという方法もありますが、標準機能をなるべく活用したアイデアを1つご紹介します。
テーブルとは別にチェックボックス(選択肢1つ。フィールドコード:編集)を設定します。
テーブル内のフィールドは通常、編集不可にしておいて、このチェックボックスがチェック(値が「編集する」)されたときに編集可とする、
という処理をJavaScriptで設定します。
あとはチェックボックスフィールドに対して、フィールドのアクセス権設定で管理者だけが編集できるように設定。
テーブルへの新規行追加は防ぐことはできませんが、既存のデータ行の保護は実現できると思います。
チェックなし(編集不可)
チェック有り(管理者のみ操作可能)
使い方としては、
ちょっと工夫
JavaScriptカスタマイズのサンプル
/*
テーブル内フィールドのアクセス権コントロール
*/
// レコード詳細画面表示イベント、レコード追加画面表示イベント
// レコード編集画面のフィールド値変更時イベント、レコード追加画面のフィールド値変更時イベント
kintone.events.on([
'app.record.edit.show', 'app.record.create.show',
'app.record.edit.change.編集', 'app.record.create.change.編集'
], function(event) {
var record = event.record;
// フィールドのdisabled設定用変数 true/false
var isDisabled = true; // 編集チェックボックスを非表示にした場合は'true'(:編集不可)
// 編集チェックボックスの値が'編集する'の場合は isDisabled=false(編集可)とする
isDisabled = record['編集']['value'] == '編集する'? false:true;
// テーブルが複数行の場合を考慮
for (var i = 0; i < record['Table']['value'].length; i++) {
record['Table']['value'][i]['value']['データ1']['disabled'] = isDisabled;
record['Table']['value'][i]['value']['データ2']['disabled'] = isDisabled;
}
return event;
});
// チェックボックス外し忘れを防止するため、保存前イベントでチェックボックスを外す処理
kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {
var record = event.record;
record['編集']['value'] = [];
return event;
});
お世話になっております。
すごくわかりやすい説明とサンプルコードまで頂いて、本当にありがとうございます。
大変勉強になりました。
本当にありがとうございました。やりたいことができました。
お世話になります。
こちらを参考に同様のカスタマイズを行いましたが、管理者ではないユーザーに、テーブルが編集出来てしまう(disabledが効かない)ユーザーと、出来ないユーザーが存在しました。
考えられる原因はあるでしょうか。
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。