Cybozu developer networkのTipsのURL:

https://developer.cybozu.io/hc/ja/articles/202341954


ドロップダウンフィールドの選択によって、別のフィールドの値を変更したり、編集不可にしたい場合ってありますよね!Customineなら簡単に実現できます!


今回はそれに加えて、自動採番や期間チェック等様々な機能で旅費精算申請アプリをはるかに便利にするカスタマイズをご紹介します。


Customineの基本的な事柄は、こちらの「はじめてのカスタマイズ」をご覧ください。


今回のカスタマイズで出来ること


  • ドロップダウンフィールドの選択を変更すると別フィールドに値を入力する。

  • ドロップダウンフィールドの選択を変更すると別フィールドを編集不可にする。

  • 終了日が入力されていて、開始日が入力されていないとエラーが表示される。

  • 終了日が開始日より前だとエラーが表示される。

  • 明細の日付が開始日と終了日の間にないと保存するときにエラーが表示される。

  • 新規レコード作成時に自動採番する。

  • レコード編集画面でスペースに文字を配置する。(リンク付き)

  • レコード詳細画面でフィールドの文字を拡大する。

  • レコード詳細画面のメニュー部分にボタンを設置する。


これだけやります!


アプリのフォーム


アプリはkintone アプリストア  の「旅費精算申請」を使います。


1. ドロップダウンフィールドの選択によって別のフィールドに値を入れる・別のフィールドを編集不可にする。


目標とする動き


ドロップダウンフィールド「地域」の選択を変更した時、

「地域」フィールドが…


  • 「首都圏」なら、「日当」フィールドを0にして編集不可にする。

  • 「海外」なら、「日当」フィールドを3000にして編集不可にする。

  • 「その他」なら、「日当」フィールドをクリアして編集可にする。

  • それ以外なら、「日当」フィールドを1000にして、編集不可にする。


レコード追加画面・編集画面を表示した時、

「地域」フィールドが「その他」以外なら編集不可にする。


Customineの設定


まずは、


  • 「地域」フィールドを「首都圏」に変更した時、「日当」フィールドを0にして編集不可にする。


この部分を設定してみましょう!



条件の設定


フィールドの値を編集して値が変わった時」を使います。さらに、「フィールド値が特定の値ならば」で「首都圏」に限定しましょう。連続で行いたい処理がある場合は「他のアクションの実行が完了した時」と使います。


やることの設定


フィールドを無効化する」で「日当」フィールドを編集不可にし、「フィールドに値をセットする」で「日当」フィールドに値を入力します。この二つはどちらが先でも大丈夫です!


この調子で「地域」が他の値になったときの処理も設定してみましょう!

編集不可になっているフィールドを編集可にするには、「フィールドを有効化する」を使います。フィールドを空にするには「フィールド値をクリアする」を使います。



できましたか?


ただし、これだけでは、レコード追加・編集画面を表示してから「地域」の値を変更するまで、「日当」の編集不可が反映されません。そこで、条件を「追加画面・編集画面を表示した時」にしたアクションも追加しましょう。



設定が完了したら、「kintoneアプリへ登録」し、動作を確認してみましょう!


2. 終了日が入力されていて、開始日が入力されていない場合や、終了日が開始日より前の場合、エラーが表示される。


目標とする動き


日付フィールド「期間(出発)」「期間(帰着)」が変更された時、


  • 「期間(出発)」が空で「期間(帰着)」が空でない時、「期間(出発)」にフィールドエラー「出発日を入力してください。」を表示する。

  • 「期間(出発)」が空でない時、「期間(出発)」のフィールドエラーを消す。

  • 「期間(出発)」も「期間(帰着)」も空の時、「期間(出発)」のフィールドエラーを消す。

  • 「期間(帰着)」が「期間(出発)」より前の時、「期間(帰着)」にフィールドエラー「出発日より後に入力してください」を表示する。

  • 「期間(帰着)」が「期間(出発)」より後、もしくは同じ時、「期間(帰着)」のフィールドエラーを消す。


Customineの設定


これもまず、


  • 「期間(出発)」が空で「期間(帰着)」が空でないとき、「期間(出発)」にフィールドエラー「出発日を入力してください。」を表示する。


この部分だけを設定してみましょう。



条件の設定


これは先ほどと同様ですね!「フィールドの値を編集して値が変わった時」の対象となるフィールドを複数設定すると、その中のどれかの値が変わった時、になります。

やることの設定


フィールドエラーを表示する」を使用します。


さて、エラーが表示されるようになりました。でもそれだけでなく、ちゃんと正しい値に直したらエラー表示は消してほしいですよね?

そこで、正しい値に直ったらフィールドエラーを消す処理を加えましょう。



条件の設定


「 『期間(出発)』が空で『期間(帰着)』が空でないとき」を満たさなくなるのは、

  • 「期間(出発)」が空でない時

  • 「期間(出発)」も「期間(帰着)」も空の時

なので、その二つにします。


やることの設定


フィールドのエラーをクリアする」を使用します。


同様に、

  • 「期間(帰着)」が「期間(出発)」より前の時、「期間(帰着)」にフィールドエラー「出発日より後に入力してください」を表示する。

  • 「期間(帰着)」が「期間(出発)」より後、もしくは同じ時、「期間(帰着)」のフィールドエラーを消す。


この部分も設定してみてください。



設定が完了したら、「kintoneアプリへ登録」し、動作を確認してみましょう!


3. 明細の日付が開始日と終了日の間にないと保存するときにエラーが表示される。


目標とする動き


レコードを保存する時、

  • 「旅費」テーブル内の「日付」フィールドに、「期間(出発)」と「期間(帰着)」の間でないものがあれば、エラーメッセージ「旅費日付が申請期間の範囲外です。」を表示し、レコードの保存をキャンセルする。

  • 「経費」テーブル内の「日付」フィールドに、「期間(出発)」と「期間(帰着)」の間でないものがあれば、エラーメッセージ「経費日付が申請期間の範囲外です。」を表示し、レコードの保存をキャンセルする。


Customineの設定


「『日付』が『期間(出発)』と『期間(帰着)』の間でない」とは、つまり「日付」が「期間(出発)」より前、もしくは「期間(帰着)」より後のどちらかなので、その2パターンの時にエラーメッセージを出すようにしましょう。


まずは「日付」が「期間(出発)」より前の時のエラーメッセージです。



条件の設定


「フィールドが特定の値ならば」の対象をテーブルの中のフィールドに設定すると、テーブル内の条件を満たした行にのみ、やることを実行します。ここでは「旅費」テーブル内の「期間(出発)」より前の「日付」にのみ、フィールドエラーを表示します。


やることの設定


「フィールドエラーを表示する」に加えて「レコードにエラーをセットする」も実行します。「レコードにエラーをセットする」は保存する直前に実行すると画面上部にエラーメッセージを表示し、保存をキャンセルします。

「旅費」テーブルの「日付」と「経費」テーブルの「日付」を間違えないように設定しましょう!



次は「期間(帰着)」より後の時のエラーメッセージです。



「期間(帰着)」は空の場合もあり、その場合はエラーメッセージを出したくないので、条件を追加しています。


「経費」テーブルも同様に設定します。



設定が完了したら、「kintoneアプリへ登録」し、動作を確認してみましょう!


4. 新規レコード作成時に自動採番する。

目標とする動き


レコードを新規作成し、保存するときに、

  • 「旅費」「経費」テーブルの日付が申請期間の範囲外のものがなければ、「No」フィールドに自動で採番した値を入力する。


Customineの設定


全てのテーブル行で列が条件を満たすならば」という条件がを使って、「旅費」「経費」テーブルの日付が申請期間の範囲内かどうかを判定します。


採番の形式は「”T” & 日付(yymmdd) & “-” & 連番」の形式です。

例えば2020年11月6日の場合はT201106-1、T201106-2、T201106-3・・・となります。

ただし、ハイフンの後の連番は通し番号で、日ごとにリセットされるわけではありません。(もし日ごとにリセットしたい場合は、採番キーに「=today()」と入れておくことで実現できます)


では設定してみましょう。今回はちょっと条件が多いですよ!



条件の設定


今回も自動採番は最初にレコードを作成するときだけでいいので、「No」フィールドが空の時のみ実行されるようにしておきます。(「No」フィールドは後で編集不可の設定をします。)


全てのテーブル行で列が条件を満たすならば」の条件が4つありますが、上二つが旅費テーブルの日付、下二つが経費テーブルの日付に対する判定です。両方のテーブルの全行の日付が出発日より後で帰着日より前の場合に自動採番を実行します。


やることの設定


自動採番を行う」を使用します。

前につける文字列は「=”T” & format(now(),"YYMMDD") & "-"」と入力します。format(now(),"YYMMDD")で現在の日付を指定の形式に変換しています。



さらに「情報ダイアログを表示する」を使用して、保存直前に採番された番号をダイアログに表示するようにしてみましょう。



メッセージは「番号${$28}を登録します。」と入力します。${$28}はアクション番号28、つまり自動採番された番号を参照します。



これで「日付」>=「期間(出発)」かつ「日付」<=「期間(帰着)」の場合、自動採番されるようになりました。しかし、これだけでは、「期間(帰着)」が空の時は常に自動採番されなくなってしまいます。


そこで、「期間(帰着)」が空の時は「日付」<=「期間(帰着)」の判定無しに自動採番されるようにもう一つ自動採番アクションを作成しておきます。



これで自動採番アクションが2つになりました。その二つが連番を別々にカウントしてしまうんじゃないか?と思うかもしれませんが、ご心配なく!


入力する対象のフィールドが同じだと、同じカウントになります。


追加の設定


  • 「No」フィールドは自動入力なので編集不可にしておく。

  • レコード再利用時は新しく採番したいので「No」フィールドを空にする。


その他の機能

スペースにリンクを表示する。



スペースに文字を表示する」を使用します。表示するテキストは文字を装飾することができるほか、式やリンクを埋め込むことができます。



ボタンを配置する。



ボタンをメニュー位置に配置する」は、アプリアクションボタンや、プロセス管理のアクションボタンの上にボタンを配置します。

設置したボタンは、条件「ボタンを押した時」を使って、押すと何が起こるかを設定することができます。


フィールドの文字を拡大縮小する。



フィールドの文字を拡大縮小する」を使用します。

フィールドの文字を拡大することで強調したりすることができます。

フィールド値が特定の値ならば」と組み合わせることで、一定の範囲を超えた値の場合のみ強調することもできます。




これで設定完了です。

「kintoneアプリへ登録」し、動作チェックしてみましょう。




終わりに

これで「旅費精算申請」アプリがかなり便利になったのではないでしょうか!

これだけのことがすべてCustomineで出来てしまいます。

発想次第で使い方の幅はさらに広がります。


ぜひいろいろ試して新しい使い方を見つけてください!



ご不明点等ございましたら、チャットにてご質問ください!


Customineドキュメントサポートページもぜひご活用ください。