NEWS

【kintone】アクションでコピーしたフィールドを編集不可にしたい!

2020.2.6
Jumpei Yamamoto

kintoneのアクション機能って便利だよね

あるkintoneアプリから別のアプリにレコードの内容をコピーしたい場合、ノンプログラミングで実現できてしまうのが「アクション」という機能(わからない人はこちら)。

これが結構便利で、プログラムが不要なのでメンテナンスもラクということで良く使う機能の1つです。

例えば、案件を管理しているアプリから顧客情報を引っ張ってきて別のアプリで請求書を作成したいという場合。

このように1クリックでコピーできちゃいます。

これがノンプログラミングで実現できてしまうなんて便利!素敵!ということで多用していたのですが、お客様からこんなご要望を頂きました。

コピーされるフィールドは編集不可にしてほしい

kintoneアプリの作成に慣れてくると、フィールドの数がどんどん増えていきます。

気づいてみると50個近くのフィールドが並んでいて、誰がどこまで入力したら良いのかとわかりづらく、使いづらいアプリになりがちです。

そこで編集不可や非表示の設定を細かく設定していくのですが、これもkintoneは標準で機能があり、管理画面にて設定をすることが可能です。

アプリの管理画面から「設定」タブを開き、「アクセス権」の「フィールド」を選択すると、上記のような画面が開かれます。

この画面でフィールドを選択し、編集のチェックボックスを外してしまえば、そのユーザは編集できなくなります。

とっても簡単!kintoneのアプリ開発なんて楽勝!と思って実行してみるとそこには落とし穴が。。。

アプリの管理画面からフィールドのアクセス権限を設定した場合、この制限は何よりも優先的に働くのでアクションによるコピーすらできなくなってしまいます。

例えば、アクセス権限の設定をしたフィールドに対してJavaScriptで更新しようとしても制限が優先されてしまうので、処理は失敗してしまいます。

このアクセス制限は結構厄介で、下手に設定してしまうと至るところに不具合が生じてしまいます(僕は極力アプリの管理画面からフィールドのアクセス権限の設定はしないようにしています)。

それでは、これを解決するためにJavaScriptでアクセス制限の処理を書いていきましょう!

JavaScriptでフィールドを編集不可にする

さて、早速JavaScriptで書いていきましょう。

下記がサンプルコードです(各フィールドコードはフィールド名と同じにしています)。

これをアプリに設置して実行してみると。。。

コピーされた上で、編集不可の設定も効いていますね!

今回は新規登録画面の表示時と編集画面の表示時をトリガーにしていますが、アクションによるコピーが行われた後にこのプログラムが実行されるため、アプリ管理で設定した時とは異なる挙動をしています。

さらにひと工夫!

今回は使用していませんが、

これでユーザ情報を取得できるので、ゲストや特定のユーザのみ編集不可の設定にすることも簡単にできます。

お試しください!

無料相談はこちら
TwitterFacebook

NEWS