kintone のアプリを使い込むと、フォームの中に「ある条件のときだけ使う項目」がたまっていきます。法人契約のときだけ入れる法人番号、承認が下りるまでしか触らない金額。全部を並べたままにすると入力画面は長くなり、現場からは「どれを埋めればいいのか」と聞かれます。
kintone 標準のフィールドのアクセス権は、ユーザーや組織を軸に、保存済みのレコードに対して効きます。追加画面でドロップダウンを切り替えた瞬間に項目を出し分ける、という動き方はしません。条件によって必須を入れ替える設定も標準にはありません。ここを埋めようとすると JavaScript を書くことになります。
この記事では、XenoX のフィールド制御プラグインを使って、顧客管理アプリに3つのルールを入れるところまで作ります。
- 契約種別が個人のとき、法人名と法人番号を画面から消す
- 契約種別が法人のとき、法人名と法人番号を必須にする
- 承認状況が承認済みのとき、契約金額と契約開始日を編集不可にする
作るアプリ
顧客を1件1レコードで持つ、よくある構成です。フィールドは8つ。
- 顧客名(文字列1行・必須)/契約種別(ドロップダウン:法人・個人)
- 法人名(文字列1行)/法人番号(13桁)(文字列1行)
- 契約金額(数値)/契約開始日(日付)/承認状況(ドロップダウン:申請中・承認済み)
- 備考(文字列複数行)
アプリを作る段階で1つだけ気をつけます。法人名と法人番号は、kintone のフォーム設定側で必須にしません。プラグインで必須にするフィールドを kintone 側でも必須にすると、非表示にしたときに保存できなくなります。
ルールは3つの部品でできている
アプリの設定からプラグインを追加して、設定画面で「+」を押すとルールのカードが1枚出てきます。中身は適用画面・条件・条件を満たすときの動作の3つだけです。
1つ目のルールはこう読みます。追加・編集・詳細の3画面で、契約種別が「個人」なら、法人名と法人番号を非表示にする。
条件に契約種別(ドロップダウン)を選ぶと、判定方法が「次のいずれかに一致する」に変わり、値の欄が選択肢のチェックボックスになりました。値を手で打ち込まないので、打ち間違いで条件が効かない、ということが起きません。条件は1つのルールに10件まで置けて、「すべての条件を満たす」と「いずれかの条件を満たす」を選べます。
動作の欄には、非表示にする・編集不可にする・編集可にする・必須にするの4つが並びます。対象のフィールドは複数まとめて指定できるので、法人名と法人番号を1行で設定しました。
カードの中ほどにある一文が、このプラグインの性格をよく表しています。「条件を満たさなくなったときは、自動的に元の状態(表示・編集可・任意)へ戻ります」。戻すためのルールを別に書く必要はありません。
個人を選ぶと法人情報が消える
アプリを更新して、新規レコードの画面を開きます。契約種別の初期値は法人なので、法人名と法人番号が見えている状態です。
ここで契約種別を「個人」に変えると、2つの欄がその場で消えました。保存ボタンを押す必要はありません。
「■ 法人情報」の見出しだけが残っているのが分かります。ラベルや罫線は制御の対象外です。見出しごと消したいときは、kintone のグループ機能でまとめるか、見出しを置かずに項目名だけで運用する形になります。
法人のときは空欄で保存させない
2つ目のルールは、条件を「契約種別が法人」にして、動作を必須にするへ変えただけです。対象は同じく法人名と法人番号。
契約種別を法人のままにして、法人名と法人番号を空にして保存を押すと、こうなります。
kintone 標準の必須と同じ見た目のメッセージが出て、保存が止まりました。ここで契約種別を個人に戻すと、2つの欄は非表示になり、赤いメッセージも一緒に消えます。非表示になったフィールドは、必須の対象でも保存を止めません。「隠したのに保存できない」という詰み方をしないように作られています。
ひとつ覚えておくとよいのは、必須になっても項目名の横に赤い星印は付かないことです。止まるのは保存を押したときです。
承認が下りたら金額を触らせない
3つ目は編集不可です。承認状況が「承認済み」のとき、契約金額と契約開始日を編集できないようにします。
ルールはタブで並びます。3つ作っても、どのルールが何をしているかはタブ名で追えます。
承認済みのレコードを編集画面で開くと、契約金額と契約開始日がグレーになりました。クリックしても入力できません。
承認状況そのものは編集できるので、差し戻しは普通にできます。実際に承認状況を「申請中」に戻してみると、2つの欄はその場で入力できる状態に戻りました。
効かない場所を先に知っておく
画面の上で動く制御なので、画面を通らない操作には効きません。手元で確かめた範囲では、次の2つが該当します。
ひとつは一覧画面のインライン編集です。承認済みのレコードを一覧の鉛筆アイコンから開くと、契約金額はそのまま編集できます。
もうひとつはAPI 経由の更新です。同じ承認済みレコードの契約金額を API から書き換えたところ、エラーにならずに更新されました。
つまりアクセス権の代わりにはなりません。見せたくないデータを本当に見せないための設定、書き換えさせたくないフィールドを本当に止める設定は、kintone 側のアクセス権で行います。このプラグインが引き受けるのは、入力する人が画面の前で迷わないようにする部分と、うっかり書き換える事故を減らす部分です。
設定にかかる時間
アプリを作るところから数えても15分ほどでした。3つのルールはどれも、条件を1つ選んで、動作を1つ選んで、対象フィールドを選ぶだけです。
同じことを JavaScript で書くと、追加・編集・詳細の各イベントを拾い、値が変わるたびに再評価し、条件が1つ増えるたびに手を入れる、という作業がついて回ります。設定画面で済むなら、条件が1つ増えたときも設定を1行足すだけです。
フィールド制御プラグインの詳細はこちらをご覧ください。入力画面が長くなりすぎて困っている、承認後の書き換えを止めたい、といったご相談はkintone の業務改善支援でも受けています。