オブジェクトの項目名に変数を使用してみよう!【Salesforce】

初めまして、入社3年目のはっしーと申します。
これからたまにこちらの技術ブログに記事を載せることがあると思いますが、その時は是非見ていってください!

さて、今回は皆さんもご存知かもしれないオブジェクトに登録したレコードの項目参照について、基本的な活用方法をお伝えしたいと思います。

ズバリ、取得したレコードの対象項目を変数で指定し、値を取得する!です!

こちらを記事にしようと思ったのは、API参照名の末に数字が振られた項目(「API1__c」、「API2__c」・・・)がいくつもあり、値を取得する際にAPI参照名を変数化して処理できたらなぁ・・・という状況が実際にあり、以下の対処方法で効率よくコーディングすることができたからです。

 

値を取得する際に項目を指定する一般的な書き方は

 

オブジェクト名.項目名;(例、Sobject__c.API__c;)

 

となりますが、この記述方法ですと、項目名をしっかりと記述しなくてはなりません。
そして、今回の本題である変数を使用して値を取得するための書き方は以下の書き方を応用して利用します。

 

オブジェクト名.get(‘項目名’);(例、Sobject__c.get(‘API__c’);)

 

また、値を登録するときは以下の書き方を応用して利用します。

 

オブジェクト名.put(‘項目名’,セット値);(例、Sobject__c.put(‘API__c’,’登録値です’);)

 

見ての通り、API参照名がString型で宣言することができるので、応用というのはString 型の変数を使用して宣言することができます。

こちらの書き方、応用して使用すると結構便利に活用することができますよ!

 

たとえば、オブジェクトに登録した類似項目の項目名を「API1__c」、「API2__c」、「API3__c」、とした場合、次の方法で各値を取得することができます。

 

例、オブジェクト「Sobject__c」のテキスト項目「API1__c」、「API2__c」、「API3__c」の値をセットし、その値をリストに登録

//対象オブジェクト
Sobject__c object = new Sobject__c();

//各項目をセット
for (Integer i = 1; i <= 3; i++) {
	String apiName = 'API' + String.valueof(i) + '__c';
	object.put(apiName,'登録した項目は' + apiName + 'です!');
}

List<String> apiList = new List<String>();

//各項目の値をリストに登録
for (Integer i = 1; i <= 3; i++) {
	String apiName = 'API' + String.valueof(i) + '__c';
	apiList.add(object.get(apiName));
}

system.debug(apiList + 'apiListには【登録した項目はAPI1__cです!】、【登録した項目はAPI2__cです!】、【登録した項目はAPI3__cです!】がこの順に登録されている')

 

このように、API参照名の指定方法として変数が利用するだけで効率よく処理することができます。

例のような項目が多ければ多いほど恩恵を受けることができるのです!

 

今回の例はほんの一例ですので、これを参考にもっと効率よく処理できるよう工夫をしてみてはいかがでしょうか?

 

次回も難易度的には高くない基本的な内容を載せていきたいと思いますので、どうぞよろしくお願いいたします。

それでは!