詳細画面上に表示された2つのテーブルへの読み取りを一般ユーザーには出来ない様に設定を行いたいのですが、アドバイス頂けないでしょうか。
コミュニティに投稿されていたJavaScriptを参考に下記のコードを作成したのですが、テーブルへの読み取りを禁止することが出来ませんでした。
下記サイトを参考にしました。
https://developer.cybozu.io/hc/ja/community/posts/115017970403-%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E6%A8%A9%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E3%82%B5%E3%83%96%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AE%E8%A1%A8%E7%A4%BA%E8%A8%AD%E5%AE%9A
(function() {
“use strict”;
kintone.events.on(‘app.record.detail.show’, function(event) {
var record = event.record;
if (!record[‘Table_Not’]) {
// テーブル閲覧可フィールドにアクセスできなかったらテーブルを非表示にする
kintone.app.record.setFieldShown(“家族構成”, false);
kintone.app.record.setFieldShown(“Table”, false);
} else {
// テーブル閲覧可フィールドにアクセスを非表示にする
kintone.app.record.setFieldShown(“Table_Not”, false)
}
return event;
});
})();
間違えている項目があればアドバイス頂けないでしょうか。
よろしくお願い致します。
記述には問題ないよう思えますね。
Table_Notの権限設定は正しくできてますか?
>kintone.app.record.setFieldShown(“Table_Not”, false)
この記述をコメントアウトしたらTable_Notが出てくるようであれば権限設定が間違っているかと。
w.yさん
コメントありがとうございます。
コメントアウトしてみましたが、Table_Notは出て来ませんでした。
一般ユーザーでログインすると、テーブル部分以外は表示されていない状態です。
kiyoさま
こんにちは。基本的にはこのコードで動くと思うので、下記の箇所をご確認ください。
1)フィールドのアクセス権の設定について
フィールドのアクセス権は上の行が優先されます。Table_Notのフィールドについて、一般ユーザ(見せたくないユーザ)が見せてもOKなユーザよりも上の行で閲覧・編集のチェックが外されているかどうかをご確認ください。
2)ちょっと気になる箇所について1(末尾について)
// テーブル閲覧可フィールドにアクセスを非表示にする
kintone.app.record.setFieldShown("Table_Not", false)
参考元でもそうなのですが、最後の「;」の記載がなさそうですね。これでも動くのですが。
3)ちょっと気になる箇所について2(イベント名について)
現在の書き方だと詳細表示イベントのみで非表示になるので、場合によっては編集画面表示イベントと追加画面表示イベントの際にも非表示にした方が良いかと思います。
['app.record.detail.show','app.record.edit.show','app.record.create.show']
4)ちょっと気になる箇所について3(テーブルで見せたくない項目を設定することについて)
これはkintoneのテーブル設定の全般に言えることですが、この方法でいくら頑張って編集・表示画面で非表示を設定しても、項目の設定方法によっては逆説的にユーザ側に見せてしまっていることになるケースがありますので要注意です。これは、私では回避方法がわからないので、わかる方がいらっしゃれば私にも教えていただきたいと思っています。具体的には、一覧画面で絞り込みをしたケースです。
例として「社員マスタ」の「家族構成」のテーブルに「続柄」というドロップダウンがあって「妻/子ども」のようなデータがあったとします。絞り込み条件にはこのドロップダウンの項目は全て晒されてしまいますので、逆説的に「続柄」に「妻」を含む社員は誰か、というのは絞り込みの結果として表示されてしまうのです。
もちろん、詳細なデータ(例えば同じテーブル内に入力した「続柄」に対する「名前」などのフィールド)は見えないのですが、絞り込み画面をカスタマイズして、こういった条件や結果を表示させない方法が私には見つけられませんでした。なお、「名前」フィールドも絞り込み対象になるので「続柄」の誰かの「名前」に「○○」を含む社員は誰か、は絞り込みの結果として表示されます。
もちろん、レコード自体の閲覧をアクセス制限で制限すれば検索結果も見えなくなるのですが、今回のような方法でレコードの一部(テーブルで設定した項目)だけを見せたくない場合、こういうケースがあることは知っておかれた方がよろしいかと思います。
kiyoさま
追記を確認しました。権限設定は合っていそうなので、一応、ご確認いただきたいのですが、
kintone.app.record.setFieldShown("家族構成", false);
kintone.app.record.setFieldShown("Table", false);
の「家族構成」と「Table」は、非表示にしたいテーブル自体のフィールドコードでしょうか。何か別のフィールドコードを記載していたり、ここのフィールドコード名が違っていると、kiyoさまの仰っている現象が発生するので、念のためにご確認ください。
小野間さん
コメントありがとうございます。
とても分かりやすく記載頂き、ありがとうございます。
もしかしてアクセス権の問題でしょうか?
アプリのアクセス権で閲覧のみにチェックを入れ、その他は外しています。
フィールドも、名前と性別の2つ以外は閲覧のチェックを外している状態です。
なので3)でご指摘頂いている、編集画面や追加画面が出ない状態になっています。(一般ユーザーのみ)
一からやり直してみます。
ありがとうございました。
小野間さん
コメントありがとうございます。
「家族構成」と「Table」はテーブル自体のフィールドコードです。
何度もアプリからフィールドコード部分をコピーして貼り付けたので、間違いないです。