[Salesforce]開発者コンソールでクエリ結果エクスポート方法

開発者コンソールでクエリ結果エクスポート方法

開発者コンソールからクエリを実行します。

クエリ結果を右クリックし、[検証] を選択します。

table タグを探します。

「要素を複製」を選択します。

エクセルを開いて貼り付けます。

[Salesforce]Agentforce VibesでApexテストクラス自動作成

1 Apexクラス作成する。

public with sharing class Sample {
    public Sample() {

    }
}

2 Agentforce Vibesに指示する。

Sampleのユニットテストクラスを作成して

3 手順2で作成された内容コピーする。

@isTest
public class SampleTest {
    
    @isTest
    static void testSampleConstructor() {
        // Arrange & Act
        Sample sample = new Sample();
        
        // Assert
        System.assertNotEquals(null, sample, 'Sample instance should not be null');
    }
}

4 空のApexテストクラスを作成して、手順3でコピーしたコードを貼り付ける。

[Salesforce]ChatGPDでテストクラス自動作成

ChatGPTを使ったApexテストクラス自動作成

以下のApexテストクラス作成して。
public class AccountProcessor implements Database.Batchable<sObject>,Database.Stateful{ 
 public AccountProcessor(){
 }
 }

以下は、提示された AccountProcessor クラスに対する Apexテストクラス のサンプルです。

@isTest
public class AccountProcessorTest {

    @isTest
    static void testBatchExecution() {
        // テストデータ作成
        List<Account> accounts = new List<Account>();
        for (Integer i = 0; i < 5; i++) {
            accounts.add(new Account(
                Name = 'TestAccount ' + i
            ));
        }
        insert accounts;

        // バッチ実行
        Test.startTest();

        AccountProcessor batch = new AccountProcessor();
        Database.executeBatch(batch, 2); // バッチサイズ指定

        Test.stopTest();

        // 簡易検証(レコードが存在することを確認)
        Integer countAccounts = [SELECT COUNT() FROM Account WHERE Name LIKE 'TestAccount%'];
        System.assertEquals(5, countAccounts);
    }
}

補足

  • Database.Stateful はテストクラス側では特別な対応不要です
  • 実際に executefinish で処理を追加した場合は、その結果を検証する assert を追加してください

もし「バッチの中身(start/execute/finish)も書いてほしい」なら、それも一緒に作れます 👍

[Salesforce]Apex で SOQL の結果を Map に反映する簡潔な書き方

一般的

List<Account> accList = [SELECT Id, Name FROM Account];
Map<Id, Account> accMap = new Map<Id, Account>();
for(Account a : accList){
    accMap.put(a.Id, a);
}

簡潔的

Map<Id, Account> accMap = new Map<Id, Account>(
  [SELECT Id, Name FROM Account]
);

[Salesforce]Apex ジョブのスケジュール

Apex ジョブのスケジュール

同時に使用できる有効なジョブまたはスケジュール済みジョブの数は 100 件です。

  1. [設定] から、[クイック検索] ボックスに「Apex クラス」と入力し、[Apex クラス] を選択して、[Apex をスケジュール] をクリックします。
  2. スケジュールを設定するクラスの名前を指定します。
  3. [Schedule Builder] または [Cron Expression] を選択して Apex ジョブをスケジュールします。
  4. スケジュールビルダーを選択した場合:
    1. Apex クラスを実行する頻度を指定します。
      • [毎週] の場合、ジョブを実行する曜日を 1 つ以上指定します ([月曜] と [水曜] など)。
      • [毎月] の場合、ジョブを実行する日付または曜日 (毎月第 2 土曜など) を指定します。Apex のスケジュール済みクラスの開始日と終了日を指定します。日付を 1 つ指定した場合は、ジョブは 1 回のみ実行されます。
      • 希望開始時刻を指定します。ジョブが開始する正確な時刻は、サービスの可用性によって異なります。
  5. [Cron Expression] を選択した場合は、cron 式を使用して時間を指定し、設定した時間にクラスを実行するようにスケジュールします。
  6. [保存] をクリックします。

[Salesforce]Using the super Keyword

Using the super Keyword

The super keyword can be used by classes that are extended from virtual or abstract classes. By using super, you can override constructors and methods from the parent class.

parent class:

public virtual class SuperClass {
    public String mySalutation;
    public String myFirstName;
    public String myLastName;

    public SuperClass() {

        mySalutation = 'Mr.';
        myFirstName = 'Carl';
        myLastName = 'Vonderburg';
    }

    public SuperClass(String salutation, String firstName, String lastName) {

        mySalutation = salutation;
        myFirstName = firstName;
        myLastName = lastName;
    }

    public virtual void printName() {

        System.debug('My name is ' + mySalutation + myLastName);
    }

   public virtual String getFirstName() {
       return myFirstName;
   }
}

extended class :

public class Subclass extends Superclass {
  public override void printName() {
        super.printName();
        System.debug('But you can call me ' + super.getFirstName());
    }
}

extended result:

The expected output when calling Subclass.printName is My name is Mr. Vonderburg. But you can call me Carl.