今回はいつもと違って、少しだけアカデミックな雰囲気のナレッジです。
前提
・小中学生向けの学習塾を運営しており、無料体験授業に参加してくれた児童にアンケートを書いてもらい、それをもとにリード情報を登録している。
・リード情報登録時に、自動の学年を登録している。レコードの作成日=登録日である。
やりたいこと
・集中講座のお知らせなどを、リードとして登録されている児童に送付するため、現在の学年がすぐにわかるようにしたい。
・高校に進学以降の学年情報は不要なため、「進学済み」と表示する。
対処法
レコードの作成日と登録時の学年の情報を使って、数式項目を作成します。
「登録時学年」項目を作成しておくリードに「登録時学年」項目を選択リスト値で「小1/小2/小3/小4/小5/小6」作成します。
例では、次のように設定しています。
<設定内容>
データ型:選択リスト
表示ラベル:登録時学年 ※わかりやすければOKです。
項目名:AcademicYearOnRegistration ※わかりやすければOKです。
数式項目「現在の学年」を作成
次のように作成します。
<設定内容>
データ型:数式
戻り値のデータ型:テキスト
表示ラベル:現在の学年
項目名:CurrentGrade
数式:
IF(TEXT( AcademicYearOnRegistration__c ) = "","",
CASE(
CASE(TEXT( AcademicYearOnRegistration__c ),
"",0,
"小1",10,
"小2",11,
"小3",12,
"小4",13,
"小5",14,
"小6",15,
"中1",16,
"中2",17,
"中3",18,
19)
+
IF(TEXT( AcademicYearOnRegistration__c ) = "",0,
IF(MONTH(TODAY())<=3,YEAR(TODAY())-1,YEAR(TODAY()))
- IF(MONTH(DATEVALUE(CreatedDate))<=3,YEAR(DATEVALUE(CreatedDate))-1,YEAR(DATEVALUE(CreatedDate)))),
0,"",
10,"小1",
11,"小2",
12,"小3",
13,"小4",
14,"小5",
15,"小6",
16,"中1",
17,"中2",
18,"中3",
"進学済"
)
)数式を分解してみます
この数式の構成を言葉で説明してみると、こうなります。
①学年の値を数字に置き換える。
②今日と作成日の日付より、作成日から経過した年数を計算して、①に加算。
年度を考慮し、1~3月である場合は1年少なく計算し、それ以外の月はそのまま年の値を計算。
③②の結果に応じて、現在の学年を表示。
①学年の値を数字に置き換える。
IF(TEXT( AcademicYearOnRegistration__c ) = "","",
CASE(
CASE(TEXT( AcademicYearOnRegistration__c ),
"",0,
"小1",10,
"小2",11,
"小3",12,
"小4",13,
"小5",14,
"小6",15,
"中1",16,
"中2",17,
"中3",18,
19)②今日と作成日の日付より、作成日から経過した年数を計算して、①に加算。
+
IF(TEXT( AcademicYearOnRegistration__c ) = "",0,
IF(MONTH(TODAY())<=3,YEAR(TODAY())-1,YEAR(TODAY()))
- IF(MONTH(DATEVALUE(CreatedDate))<=3,YEAR(DATEVALUE(CreatedDate))-1,YEAR(DATEVALUE(CreatedDate)))),
③②の結果に応じて、現在の学年を表示。
0,"",
10,"小1",
11,"小2",
12,"小3",
13,"小4",
14,"小5",
15,"小6",
16,"中1",
17,"中2",
18,"中3",
"進学済"
)
)テストしました
この数式は作成日のデータをもとにしているので、
こちらの記事を参考に設定し、作成日を過去にしたテストデータのCSVを作成して、データローダでUpsertしました。
結果は……
現在の学年、正しく計算されているようです。
ひとこと
簡単に計算できそうでできないときもある……それがSalesforceの項目です。現在の学年を出すだけで長くなってしまいました。
数式の作成はクリエイティビティが求められますが、色々な例を参考に作成してみて、構文エラーを重ねて作成できるようになりますので、今回の例も学習の一助になれば幸いです。
参考
◇ Saleforce >数式の演算子と関数 A – H >CASE ※今回は説明しなかった CASE関数の使い方がわからない場合は、こちらで確認してください。
関連記事
レコードの作成日や最終更新日(監査項目)を過去の日付にする