具体的な判定式・記述がどうやっても分からずご教授頂けると幸いでございます。
こんにちは!
↓ドキュメントはこちらです。
https://developer.cybozu.io/hc/ja/articles/360015513211
↓こちらのサンプルが参考になるかと思います。
juridonさんありがとうございます!
前提条件が実はあって(ここを先にお伝えするべきで、大変申し訳ありません)
・特定のフィールド(employee_ageとします)へのアクセス権がないユーザーに対して、レコード詳細画面を表示した際には当然そのフィールドは非表示となっているはずです。employee_ageへのアクセス権があるユーザーに対して、レコード保存実行前イベントにて年齢を計算させる、employee_ageへのアクセス権がないユーザーに対してはレコード保存実行前イベントを回避させるという動作をさせたいです。
・ログインユーザーによってemployee_ageフィールドへのアクセス権が違うので、都度employee_ageフィールドへのアクセス権を取得する記述を探したのですが無くて(調べるのが不足かもしれませんが)、Ageフィールドの表示/非表示を判定基準として上記の動作を実現したいところでございます。
if(employee_ageが表示){
処理;
}else{
return;
}
このifの条件式があればいいなという思いで投稿させていただいたところです。
(この部分が足らずで申し訳ございません)
・現在、
try{
record.employee_age.disabled = true; //年齢
}catch(e){
flag = false;
}
employee_ageにアクセス権が無ければエラーが出ることが分かっているので上記の記述で動作を実現しているのですが、応急処置的記述だと思っており、正しく記述できることができないものか、悩んでいるところでございます。
前提条件が長くなってしまいましたが、現状上記のことをクリアできる方法がありますでしょうか?
もしくは応急処置的記述が最適解なのか、ご教授頂けると幸いでございます。
そうですね(><)おっしゃる通り、フィールドのアクセス権はアプリの管理権限がないと取得できないので、
recordのなかにemployee_ageプロパティ(フィールド)があるかどうか(表示・非表示というか存在しているかどうか)を調べるのがいいかと思います。
try&catchを使わない方法で行くとすれば。。。
hasOwnProperty()メソッドを使うのはいかがでしょうか??
試してないのですが、
アクセス権がなかったら多分、
event.record.record.hasOwnProperty(‘employee_age’) がfalseになると思います。
hasOwnPropertyについて↓
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty
juridonさんありがとうございます!
ご教授いただきました方法で実現することができました!
kintoneの関数などで何とかできないか?とばかり考えていたのですが、javascriptではどうかという思考が全くなかったです