学習塾の無料体験授業参加時の学年から、現在の学年を表示させる

学習塾の無料体験授業参加時の学年から、現在の学年を表示させる

数式項目を作って、学年の情報を更新させて表示します。数式はちょっと長く見えますが、内容はシンプルな計算です。
学習塾の無料体験授業参加時の学年から、現在の学年を表示させる
4
学習塾の無料体験授業参加時の学年から、現在の学年を表示させる
Admin
2020/10/13 17:04:39
今回はいつもと違って、少しだけアカデミックな雰囲気のナレッジです。


前提

・小中学生向けの学習塾を運営しており、無料体験授業に参加してくれた児童にアンケートを書いてもらい、それをもとにリード情報を登録している。
・リード情報登録時に、自動の学年を登録している。レコードの作成日=登録日である。


やりたいこと

・集中講座のお知らせなどを、リードとして登録されている児童に送付するため、現在の学年がすぐにわかるようにしたい。
・高校に進学以降の学年情報は不要なため、「進学済み」と表示する。

対処法

レコードの作成日と登録時の学年の情報を使って、数式項目を作成します。

「登録時学年」項目を作成しておく
リードに「登録時学年」項目を選択リスト値で「小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関数の使い方がわからない場合は、こちらで確認してください。


関連記事

レコードの作成日や最終更新日(監査項目)を過去の日付にする


gilde tech(for Salesforce)」に入会しませんか?
登録すると、「gilde tech」に掲載されているSalesforceのノウハウを全部閲覧できるだけでなく、自分が知っている知識を発信し、他の会員と交流することもできます。
またSalesforceの知識習得に役立つイベント情報も得ることができます。
是非ここで得た知識を業務に活かしてください!
4
コメント