今回は一覧画面で条件に合うレコードの背景色やフィールドの文字色を変更することで、注目すべき部分をわかりやすくするカスタマイズをご紹介します。
また、条件にあるレコードを集計し、結果をダイアログに表示することで現在の状況を簡潔に知らせることができます。
これを利用して「問い合わせ管理」アプリで自分が担当している問い合わせや、対応期限が迫っている問い合わせをわかりやすく表示してみましょう!
Customineの基本的な事柄は、こちらの「はじめてのカスタマイズ」をご参照ください。
アプリのフォーム
kintone アプリストア にある「問い合わせ管理」を使います。
やりたいこと
・「対応担当者」にログインユーザーが含まれているレコードは背景色を水色に
・「対応状況」が「完了」以外で、「期限」が今日よりも前のレコードは、「期限」の文字色を赤に
・「対応状況」が「完了」以外で、「期限」が今日よりも後で、今日から五日以内のレコードは、「期限」の文字色を青に
・「対応状況」が「完了」以外で、「対応担当者」にログインユーザーが含まれていて、「期限」が今日よりも前のレコードを集計し、ダイアログに表示
完成形
Customineの設定
必要なカスタマイズは以下の様になります。
「他のアクションの実行が完了した時」で実行の順番をコントロールしているので、各アクションの実行される順番を図で表すと以下の様になります。
ここから各アクションの設定を解説していきます。
「対応担当者」がログインユーザーのレコードは背景色を水色に
ユーザー選択フィールド「対応担当者」にログインユーザーが含まれている場合、そのレコードの行の背景色を水色に変更します。
やること
「フィールド背景色を変更する」を使用します。指定のフィールドの背景色を指定の色に変更することができます。
色の設定は設定ウインドウから自由に選択できます。
条件
「一覧画面を表示した時」に「フィールド値が特定の値ならば」や「ログインユーザーが指定のユーザーならば」を組み合わせることで、一覧画面で条件に合うレコードにのみ「やること」を実行することができます。
ここでは「ログインユーザーが指定のユーザーならば」で「=Person.code(「対応担当者」のログイン名)」を指定することで「対応担当者」にログインユーザーが含まれているレコードの各フィールドの背景色を指定の色に変更しています。
もし、特定の一覧でのみ実行したい場合は、「現在の一覧が指定の一覧ならば」を使って実行する一覧を限定することもできます。
現在の日付を取得する
・「対応状況」が「完了」以外で、「期限」が今日よりも前のレコードは、「期限」の文字色を赤に
・「対応状況」が「完了」以外で、「期限」が今日よりも後で、今日から五日後以内のレコードは、「期限」の文字色を青に
・「対応状況」が「完了」以外で、「対応担当者」にログインユーザーが含まれていて、「期限」が今日よりも前のレコードを集計し、ダイアログに表示
これら3つは全て条件に現在の日付の情報が必要なので、先に取得しておく必要があります。
やること
「特定の日付を取得する」を使用します。取得する日付の種類は「今日」です。
「対応状況」が「完了」以外で「期限」が今日よりも前のレコードは、「期限」の文字色を赤に
やること
「フィールド文字色を変更する」を使用します。指定のフィールドの文字色を指定の色に変更することができます。
条件
「対応状況」が「完了」以外で「期限」が今日よりも前のレコードに限定したいので、「フィールド値が特定の値ならば」を二つ追加しています。「フィールド値が特定の値ならば」は日付の前後も判断でき、「フィールド値が比較値より前」という設定にしたい場合は、「条件」を「小さい(<)」にします。
「対応状況」が「完了」以外で、「期限」が今日よりも後で、今日から五日以内のレコードは、「期限」の文字色を青に
条件判定のためには今日の日付に加えて今日から五日後の日付も必要なので、先に「日付を計算する」で、アクション1で取得した今日の日付から五日後の日付を計算します。
文字色変更は先程と同じです。
「対応状況」が「完了」以外で、「対応担当者」にログインユーザーが含まれていて、「期限」が今日よりも前のレコードを集計し、ダイアログに表示
これには1.足りない情報を取得、2.条件に合うレコードを取得、3.レコード数計算、4.ダイアログに表示、という段階を踏む必要があります。
「対応状況」が「完了」以外で、「対応担当者」にログインユーザーが含まれていて、「期限」が今日よりも前のレコードを取得するには、ログインユーザーの情報が足りないので、まずは「ログインユーザーを取得する」で取得します。
レコード取得に必要な情報がそろったのでレコードを取得します。今回は条件が複数なので、「キーを指定してレコードを取得する」ではなく、複雑な条件を設定できる「クエリで条件を指定してレコードを取得する」でレコードを取得します。
「検索条件」には「Status not in ("完了") and Person in (${$7.code}) and LimitDay < "${$1}"」と入力します。
「『対応状況』が完了でない」を意味する「Status not in ("完了") 」、「『担当者』が(アクション7で取得した)ログインユーザーのログイン名を含む
」を意味する「Person in (${$7.code}) 」、「『期限』が(アクション1で取得した)今日より前」を意味する「LimitDay < "${$1}"」をandでつないで、すべての条件を満たすレコードを検索しています。
検索条件パラメーターの記法については、cybozu developer networkのAPIドキュメントをご参照ください。
情報ダイアログに表示したいのは、取得したレコードの件数なので、「レコード行数をカウントする」でアクション5で取得したレコードの数を計算します。ただし、取得したレコードが0件の場合はダイアログを表示しなくてよいので、「レコード件数が1件以上ならば」を使って限定します。
ダイアログに表示するすべての情報がそろったので、「情報ダイアログを表示する」でダイアログを表示しましょう。
「メッセージ」には「期限が切れている ${$7.name} さんのレコードが ${$6}件あります。」と入力します。「${$7.name} 」はアクション7で取得したログインユーザーのユーザー名、「${$6}」はアクション6で計算したレコード数にそれぞれ置き換えられます。
終わりに
一覧画面で注目すべきフィールドやレコードの色を変えることで、現在の状況を把握しやすくすることができます。これでやるべきことを忘れなくて済みますね!
色々設定してどんどん便利なアプリにしてくださいね!
Customineヘルプやサポートもぜひご活用ください。