フィールドの装飾をしてみよう
kintoneのレコードのフィールドの文字色や背景色を変更するといった、フィールドを装飾するユースケースはよくあります。
たとえば、条件付き書式のように特定の条件に一致したときだけフィールドのスタイルを変更するといった例です。
kintoneにはフィールドの装飾に対応するためのkintone JavaScript APIが用意されています。
今回は、kintone JavaScript APIを使ってkintoneのフィールドを装飾する方法や、DOM操作によるkintoneアップデートへの影響について学びます。
カスタマイズを適用するアプリ
アプリストアの
総務への依頼受付
を使います。
フィールドのスタイルを変更するまでの処理の流れ
レコードのフィールドのスタイルを変更したい場合、次の流れで処理を実装します。
- フィールドの値から、スタイルを変更する条件を判定する。
- レコード詳細画面では
kintone.app.record.setFieldStyle()、レコード一覧画面の場合はkintone.app.setRecordListStyle()を使って、フィールドコードとスタイルを指定する。
レコード詳細画面でフィールドのスタイルを変更する
それでは、レコード詳細画面でフィールドのスタイルを変更する方法を見ていきましょう。
実装するのは、レコード詳細画面を表示した後に、チェックボックスフィールド(フィールドコード:Urgent)の文字色を変更するカスタマイズです。
条件付き書式のように、チェックボックスの値に「至急」が選択されていたら、フィールドの文字を赤色かつ太字に変更します。
動作イメージ
今回のカスタマイズを適用すると、レコード詳細画面で、「至急」フィールドの「至急」の文字が赤色かつ太字に変わります。
サンプルコード
|
|
このカスタマイズのポイントは次の2つです。
- レコード詳細画面のフィールドのスタイルを変更するAPIを使う。
setFieldStyle()で文字色と太字を指定する。
レコード詳細画面のフィールドのスタイルを変更するAPIを使う
レコード詳細画面で特定のフィールドのスタイルを変更するには、
フィールドのスタイルの設定
のkintone.app.record.setFieldStyle()を使います。
第1引数はフィールドコード、第2引数はスタイル設定のオブジェクトを指定します。
このAPIは非同期なAPIのため、async/awaitを使って呼び出します。
|
|
setFieldStyle()で文字色と太字を指定する
setFieldStyle()では、フィールドのコンテンツに対するスタイルをcontentに指定します。
- 文字色の変更:
colorにカラーコードを指定する。 - 太字:
fontWeightにboldを指定する。
|
|
レコード一覧画面でフィールドのスタイルを変更する
次に、レコード一覧画面でフィールドのスタイルを変更する方法を見ていきましょう。
実装するのは、レコード一覧を表示した後に、ステータスフィールド(フィールドコード:ステータス)の背景色を変更するカスタマイズです。
ステータスフィールドの値によって背景色を変更します。
なお、ステータスフィールドは、プロセス管理を有効化することで利用できます。
有効化にする手順は、次のヘルプページを参照してください。
基本的なプロセス管理の設定
動作イメージ
今回のカスタマイズを適用すると、レコード一覧画面で、ステータスの値によって「ステータス」フィールドの背景色が変わります。
サンプルコード
|
|
このカスタマイズのポイントは次の2つです。
- レコード一覧画面のフィールドのスタイルを変更するAPIを使う。
- レコードごとにスタイル設定を組み立て、適用する。
レコード一覧画面のフィールドのスタイルを変更するAPIを使う
レコード一覧画面でフィールドのスタイルを変更するには、
レコードの一覧(表形式)のスタイルの設定
のkintone.app.setRecordListStyle()を使います。
スタイルを適用するレコードは、HTML要素の並び順ではなくレコードIDで指定します。
このAPIは非同期なAPIのため、async/awaitを使って呼び出します。
|
|
レコードごとにスタイル設定を組み立て、適用する
レコード詳細画面で使用したAPIとの大きな違いは、一覧に表示されている複数レコードへまとめてスタイルを指定することです。
各レコードのスタイルはbody配列に追加し、最後にsetRecordListStyle()へ渡します。
背景色を変更する場合は、backgroundのbackgroundColorへカラーコードを指定します。
|
|
DOM操作とkintoneアップデートの影響
JavaScriptに馴染みがある人は、document.querySelector()などのブラウザーのAPIを使ってkintone製品のHTMLのクラス名を指定し、HTML要素を取得する方法を思い付くかもしれません。
いわゆるDOM操作と呼ばれる方法です。
しかし、DOM操作はkintoneのアップデートに影響を受けやすくなるリスクを伴っています。
kintoneのアップデートで、製品のHTMLの構造が変更される可能性もあるからです。
たとえば、document.querySelector()で製品のHTMLのクラス名を指定していると、アップデートで製品のHTMLのクラス名が変わった場合にHTML要素を取得できなくなります。
スタイル変更が効かなくなるほか、実装方法によってはJavaScriptの実行時にエラーが発生して、カスタマイズ全体が動かなくなることもあります。
フィールドのHTML要素を取得するAPI(getFieldElement()やgetFieldElements())を使い、取得した要素のstyleプロパティを直接書き換える方法も、同様にアップデートの影響を受けやすいです。
フィールドのスタイル変更には、次のAPIを使ってください。
補足
アップデートの影響を受けにくいカスタマイズの詳細は、次の記事を参考にしてください。
そのカスタマイズ大丈夫? アップデートの影響を受けにくいカスタマイズTips
まとめ
今回は、kintone JavaScript APIを使ってフィールドのスタイルを変更する方法や、DOM操作によるkintoneアップデートへの影響について学びました。
フィールドを装飾することで、ユーザーが見落としてしまいがちな情報を強調表示できます。
また、アップデートの影響を受けにくいカスタマイズ方法は、kintoneカスタマイズを行う上で重要なポイントです。
「ある日突然カスタマイズが動かなくなった!」を防ぐためにも、DOM操作のリスクを理解しておきましょう。
次回は、 レコード詳細画面にボタンを配置してみよう について学習しましょう。