テキスト数式の使用
学習の目的
数式のテキストの概要
組織の情報を一目で確認できるようにする最も簡単な方法が、テキストで表示することである場合があります。戻り値のデータ型にテキストを使用する数式では、テキスト値の連結や、数値や日付の変換、条件に応じたテキストの表示などが行えます。
中でも一番簡単な操作は、& 演算子を使用して 2 つのテキスト文字列を連結することです。たとえば、取引先責任者の姓と名を組み合わせて、氏名を表示することが考えられます。
FirstName & " " & LastName
テキスト値をつなげるときは、必要なスペースを挿入し、何だかわからない文字列が表示されないようにします。「JaneDoe」よりも「Jane Doe」のほうがはるかに読みやすくなります。
一般的なテキスト関数と演算子
Salesforce には、数式でテキストを簡単に処理できるようにする関数や演算子が多数用意されています。数式を使用すると、他のデータ型をテキストに変換することや、テキスト値をまとめて連結すること、テキスト項目内の特定の文字列を検索することなどができます。
テキスト値の変換
TEXT() は、パーセント、数値、日付、日付/時間、選択リスト、通貨などの項目をテキストに変換します。TEXT() で返される出力には、書式設定、カンマ、通貨記号がありません。たとえば、TEXT(percent_value) の percent_value が 30% に設定されている場合、0.3 が返されます。
TEXT() は、日付または日付/時間値を受け取ると、標準の日付または日付/時間形式の文字列を返します。たとえば、date_value が 2015 年 3 月 17 日に対応する場合、TEXT(date_value) は 2015-03-17 を返します。datetime_value が 2015 年 3 月 17 日午後 5 時の場合は、TEXT(datetime_value) が 2015-03-17 17:00:00Z を返します。Z は、返された時間が GMT であることを示します。TEXT() は日付/時間値を常に、現在のユーザまたは組織のタイムゾーンではなく、GMT で表示します。
また、テキスト値を取って数値を返す VALUE() を使用すれば、値を逆方向に変換できます。VALUE() が数値以外の値 (小数点とマイナス記号を除く特殊文字など) 受け取ると、#Error! を表示します。たとえば、text_value が $500 の場合は、VALUE(text_value) がエラーを返します。text_value が空白の場合も、VALUE() がエラーを返します。
その他のテキスト関数
BEGINS(text, compare_text) は、テキストの先頭が compare_text の場合に、true を返します。同様に CONTAINS(text, compare_text) は、text のいずれかの場所に compare_text がある場合に、true を返します。これらの関数は、テキスト項目に基づいて、情報を条件に応じて表示する場合に役立ちます。
SUBSTITUTE(text, old_text, new_text) 関数は、テキストエディタの検索および置換関数と同様に、old_text が new_text に置き換えられたインスタンスのあるテキストを返します。
Salesforce には、数式でテキストを処理または書式設定するためのその他の関数も用意されています。詳細は、Salesforce オンラインヘルプの「数式の演算子と関数」を参照してください。
数式でのテキスト型の使用
取引先評価の割り当て
戻り値のデータ型にテキストを使用する数式は概して、定量化しにくい情報を表示します。たとえば、テキスト数式を使用して、リードが「見込み有り」「将来見込み有り」「見込み無し」のどれに該当するかを判断することが考えられます。ここでは、条件ロジックと、リード評価を返す ISPICKVAL() 関数の両方を使用する数式を記述します。
この例では、リードを収益、国、ソースに基づいて評価します。
- 見込み有り — AnnualRevenue が 100 万ドル超で、Country が米国で、LeadSource がパートナー紹介である。
- 将来見込み有り — AnnualRevenue が 100 万ドル超で、Country が米国で、LeadSource が購入済みリストまたは Web である。
- 見込み無し — 取引先が上記のどちらの条件も満たさない。
この数式は、一連の IF()、AND()、OR() ステートメントを使用して、上記の条件をチェックし、ISPICKVAL() を使用して [リードソース] 項目を評価します。また、CASE() ステートメントを使用して、[国] もチェックします。国が「US」「USA」「America」「United States」の場合は、CASE() ステートメントが US を返します。それ以外の場合は、NA (該当しない) を返します。
選択ツリーを使用すると、数式の論理フローに従いやすくなります。

- [設定] で、[クイック検索] ボックスを使用して [オブジェクトマネージャ] を検索します。
- [リード] | [項目とリレーション] をクリックし、[新規] をクリックします。
- [数式] を選択して、[次へ] をクリックします。
- [項目の表示ラベル] に、「Rating」 (評価) と入力します。[項目名] は自動入力されます。
- [テキスト] を選択し、[次へ] をクリックします。
- 次の数式を入力します。
IF( AnnualRevenue > 1000000 && CONTAINS(CASE(Country, "United States","US","America","US", "USA","US","US","US","NA"),"US"), IF( ISPICKVAL(LeadSource, "Partner Referral"), "Hot", IF( ISPICKVAL(LeadSource, "Purchased List") || ISPICKVAL(LeadSource, "Web"), "Warm", "Cold" ) ), "Cold" )
[Rating (評価)] という新しい数式項目に、リードの特徴に基づいて、「見込み有り」「将来見込み有り」「見込み無し」のいずれかが表示されます。
CASE() を使用した画像の表示
戻り値がテキスト型の数式が役立つのは、テキスト情報だけではありません。この数式を使用して画像を表示することなどもできます。画像があると、情報を一目で確認しやすくなり、テキストのみの場合よりもユーザが目を向ける可能性が高くなります。では、先ほど作成した [Rating (評価)] 項目を使用して、リードの評価を 0 ~ 5 つの星で視覚的に表示する数式を記述してみましょう。
IMAGE() 関数は最大 4 つの引数を取ります。IMAGE(image_url, alternate_text, height, width) は、image_url で指定した画像を表示します。画像のサイズは height および width 引数 (省略可能) で指定します。画像を表示できない場合は、関数が alternate_text を表示します。
リードの [Rating (評価)] が
- 「見込み有り」の場合は、星が 5 つ表示されます。
- 「将来見込み有り」の場合は、星が 3 つ表示されます。
- 「見込み無し」の場合は、星が 1 つ表示されます。
リードの [Rating (評価)] が空白の場合は、星が 1 つも表示されません。
[Star Rating (星による評価)] という名前で、戻り値がテキスト型の数式項目を作成します。高度な数式エディタに、次のとおり入力します。
IMAGE( CASE(Rating__C, "Hot", "/img/samples/stars_500.gif", "Warm", "/img/samples/stars_300.gif", "Cold", "/img/samples/stars_100.gif", "/img/samples/stars_000.gif"), "Unknown")
この数式では、Salesforce に組み込みの画像を使用しますが、最初に [ドキュメント] タブにアップロードすれば独自の画像も使用できます。
テキストの例
- 次の数式は、米国に所在する取引先の [都道府県(請求先)] 項目を使用して、北部、南部、東部、西部、中部のいずれかに分類します。
IF(ISBLANK(BillingState), "None", IF(CONTAINS("AK:AZ:CA:HA:NV:NM:OR:UT:WA", BillingState), "West", IF(CONTAINS("CO:ID:MT:KS:OK:TX:WY", BillingState), "Central", IF(CONTAINS("CT:ME:MA:NH:NY:PA:RI:VT", BillingState), "East", IF(CONTAINS("AL:AR:DC:DE:FL:GA:KY:LA:MD:MS:NC:NJ:SC:TN:VA:WV", BillingState), "South", IF(CONTAINS("IL:IN:IA:MI:MN:MO:NE:ND:OH:SD:WI", BillingState), "North", "Other"))))))
- 次の数式は、HYPERLINK() 関数にリンクを埋め込みます。一般に、HYPERLINK(url, display_text, target) は、url へのリンクと display_text を表示します。target 引数 (省略可能) は、リンクがクリックされたときに Web ページをどのように表示するかを決定します。target が空白のままの場合は、デフォルトで、リンクをクリックしたときに新しいブラウザウィンドウが開きます。
HYPERLINK("https://www.salesforce.com", "Salesforce")
- 次の数式は、[メール] 項目を取り、そのメールを使用して URL を作成します。FIND() と SUBSTITUTE() を使用して、メールアドレス内の @ 記号を検索し、@ の左側をすべて www に置換します。
SUBSTITUTE(Email, LEFT(Email, FIND("@", Email)), "www.")
テキスト数式の一般的なエラー
値からテキストへの変換。数式で項目を使用する前に、その項目のデータ型を必ず確認します。たとえば、前任の Salesforce システム管理者が、データをテキスト値として格納するカスタム項目を作成していた可能性があります。その場合は、TEXT() または DATEVALUE() を使用して、テキスト値と日付値を同時に処理できます。
ヘルパー数式項目
ヘルパー数式項目を活用することは、数式を簡潔にして理解しやすくする優れた方法です。ヘルパー項目とは、大規模な計算の一部のみを実行するもので、末尾の数式項目から参照されます。ヘルパー数式項目はどの種別の数式でも使用できますが、ここでその一例を見てみましょう。
ケースのオープン期間に応じて、ケースのカテゴリ (緑、黄、赤) を表示する Case_Category__c というテキスト数式を記述するとします。通常、この数式は次のようになります。
IF(((NOT(IsClosed)) && (TODAY() - DATEVALUE(CreatedDate) > 20)), "RED", IF((NOT(IsClosed)) && (TODAY() - DATEVALUE(CreatedDate) > 10), "YELLOW", "GREEN"))
TODAY() - DATEVALUE(CreatedDate)
IF(((NOT(IsClosed)) && (Case_Age_In_Days__c > 20)), "RED", IF((NOT(IsClosed)) && (Case_Age_In_Days__c > 10), "YELLOW", "GREEN"))