2022/7/25:初回投稿
2022/9/8:修正(recordId補足)
カスタム項目を作成する際、重要なのが「データ型」。金額ならば「通貨」、メールアドレスならば「メール」と入力したいデータに沿ったデータ型を選択すべきなのはもちろんですが、入力効率UPや入力のゆらぎを無くして集計を叶えるために「選択リスト」型はとても有効です。
ただし5段階評価のような「数値」の場合は要注意…「選択リスト」で作ってしまうと、レポートで便利な集計機能が使えません。

とはいえ「数値」データ型だとユーザが1~5の数字で入力するよう周知が必要だったり、ヘルプテキストで補足説明を入れておいたり、ミスやゆらぎが出ないよう徹底するならば入力規則で1~5以外の数字は制限するなど工夫が必要です。
解決策として、戻り値が数値の数式カスタム項目を作成することで選択リスト値を数値として扱うことが可能です。
数式=VALUE(TEXT(選択リスト項目)))
数式にさらに一工夫、選択リスト値から数字部分だけ抜き出すようにすれば、選択リストの値には説明も入れつつレポートでは数値として計算することも可能です。
数式=VALUE(LEFT(TEXT(選択リスト項目),1))

ただし、項目の数だけ数式項目も必要になってしまうため、数が多い場合やそのオブジェクトで利用できるカスタム項目数に余裕がない場合は現実的ではありません。
そこで取り入れたいのが『画面フロー』です!
オブジェクトの項目のデータ型は「数値」としつつ、入力のしやすさを画面フローで補ってあげます。作成したシンプルなフローがこちら。



作成した画面フローは【アクションボタン】から起動もできますし、レコードの画面に配置することもできます。

画面フローを設定する際は「recordId」という変数を準備します。
「recordId」はIだけ大文字、入力で使用可能にチェックを入れる、そこだけ抑えればOKです。
データ型は「テキスト」か「レコード」を使用できますが、この記事ではデータ型:テキストで作成しています。
(recordIdについては過去記事「
実験:フローで取引先を【関連情報と共にコピー】してみた」内の解説もおすすめです。)

アクションボタンを押した場合、レコードのIDがrecordIdに渡される仕様になっています。
Lightningページに配置した場合は、コンポーネントの設定画面で「レコードIDをこの変数に渡す」にチェックを入れてrecordId変数にレコードIDを渡すようにします。

画面フローでは「選択リスト」はもちろん、標準のレコード画面では利用できない「ラジオボタン」や「スライダ」も利用することができます。

選択リスト、ラジオボタン、いずれも選択肢の表示ラベルはわかりやすい文字列にしながら、値は数値として設定することができます。

選択肢表示ラベルではフォントや色も設定可能です。画像を挿入することもできます。
(▼試しに画像を並べてみた画面。
選べないのでラジオボタンじゃなくチェックボックスの方が適切でした😖)
スライダは、ステップサイズ(間隔)、最小値と最大値が設定できるため、0~100の間で5刻みで入力して欲しいような場合などに便利です。入力規則で数式を考えるよりずっと簡単。

参考までに、フローの「レコードを更新」要素では次のように設定しています。
更新するレコードを検索してその値を設定する方法
:レコードを識別する条件を指定し、項目を個別に設定
レコードを更新する条件の要件
:すべての条件に一致(AND)
項目:Id 演算子:次の文字列と一致する 値:recordId
項目値をレコードに設定
項目:各数値項目 ← 値:画面コンポーネント

スライダの場合は 画面コンポーネントのスライダを選択後、value(値)を選択します

多数設定された入力規則のために、エラーメッセージが出てなかなか保存できないとユーザのストレスになったり入力離れを招くことも。
今回紹介したラジオボタンやスライダのような入力形式以外にも、特定の値を選んだ場合のみテキストフォームを追加で表示する動的フォームに近いことも作成できたり、入力内容によって分岐をさせたりなど、柔軟に設定することができます。
以前は【次へ】【完了】しか表示できなかったボタンの文字も、Spring'22からカスタマイズできるようになり、クリックしたら何が起こるかわかりやすく表示できるようになりました。(この記事のフローでは【レコードを更新】と表示してみました。)
ユーザに易しい画面作り、画面フローにぜひチャレンジしてみてください。