Salesforce Trailheadチャレンジメモ(Apex の基礎とデータベース)

(チャレンジの回答がどうしてもわからないとき)

Trailblazer CommunityやStack Overflowで、問題文のタイトルやエラーメッセージで調べてみると回答についての投稿が見つかることがあります。
Salesforce Trailblazer Community https://success.salesforce.com/successHome
Stack Overflow - Where Developers Learn, Share, & Build Careers https://stackoverflow.com/

モジュール「Apex の基礎とデータベース」

Apex の使用開始

Create an Apex class that returns an array (or list) of strings.

  1. public class StringArrayTest {
  2.     public static String[] generateStringArray(Integer numbers) {
  3.         List<String> arraylist = new List<String> ();
  4.         for(Integer i=0; i<numbers; i++) {
  5.             arraylist.add('Test ' + i);
  6.             // System.debug(arraylist[i]);
  7.         }
  8.        return arraylist;
  9.     }
  10. }
あるいは、整数部分を文字列(String)にしてもチャレンジに成功します。
            arraylist.add('Test ' + i);
            arraylist.add('Test ' + i.format());

DML を使用したレコードの操作

Create a method for inserting accounts.

  1. public class AccountHandler {
  2.     public static Account insertNewAccount(String name) {
  3.         try {
  4.             Account acct = new Account();
  5.             acct.Name = name;
  6.             acct.Phone= '(123)444-1212';
  7.             insert acct;
  8.             return acct;
  9.         } catch (DmlException e) {
  10.             System.debug('A DML exception has occurred; ' + e.getMessage());
  11.             return null;
  12.         }
  13.     }
  14. }

このメソッドを実行する際、
AccountHandler.insertNewAccount('Account Name');
だと成功しますが、
AccountHandler acct = new AccountHandler();
acct.insertNewAccount('Account Name');
だとエラーになってしまいますが、チャレンジには成功します。
Execute Anonymous Error

SOQL クエリの作成

Create an Apex class that returns contacts based on incoming parameters.

  1. public class ContactSearch {
  2.     public static List<Contact> searchForContacts(String lastname, String postalcode) {
  3.         try {
  4.             List<Contact> cts = [SELECT Id, Name FROM Contact                              WHERE LastName = :lastname AND MailingPostalCode = :postalcode];
  5.             return cts;
  6.         } catch (Exception e) {
  7.             System.debug('An extention has occured: ' + e.getMessage());
  8.             return null;
  9.         }
  10.     }
  11. }
try ~ catch は不要かも知れません。

SOSL クエリの作成

Create an Apex class that returns both contacts and leads based on a parameter.


  1. public class ContactAndLeadSearch {
  2.     
  3.     public static List<List< sObject>> searchContactsAndLeads(String searchKey) {
  4.         String searchQuery = 'FIND \'' + searchKey + '\' IN ALL FIELDS RETURNING Lead(LastName),Contact(FirstName,LastName,Department)';
  5.         List<List< sObject>> searchList = search.query(searchQuery);
  6.         // System.debug('searchList size is ' + searchList.size());
  7.         return searchList;
  8.     }
  9. }

リードと取引先責任に「姓(LastName)」が「Smith」のレコードを登録し、Query EditorでSOSLで検索できることを確かめます。

  • FIND {Smith} IN ALL FIELDS RETURNING Lead(FirstName,LastName), Contact(FirstName,LastName,Department)

SOSLをStringの変数に代入し、search.query(searchQuery)を実行する手段は、Trailheadのこのコースでは説明されてないので、Webで「SOSL in Apex」の検索語で調べました。


コメント

このブログの人気の投稿

systemd-resolveの設定(Ubuntuなどの動的DNS設定)

GRUB起動メニューのタイムアウト時間、起動するOSの変更