セーブポイントが見つからない

【Salesforce】Apexバッチのスケジューリング方法

こんにちは、にいるです。

今回は、「Apexバッチのスケジューリング設定の方法」について説明したいと思います。

【ヘルプ】Apex ジョブのスケジュール
【ヘルプ】Apex スケジューラ

1.Apexバッチとは

Apexバッチとは、Apexの一括処理を指します。
メリットとして、非同期での実行になるのでガバナ制限が緩和されるため、より多くの処理を実行できるようになります。

バッチとスケジューラを分けている場合は、スケジューラ実行→スケジューラからバッチ呼び出し→バッチ実行という処理の流れになっています。

スケジューラで実行時間を設定して、バッチに処理する内容を書くという形ですね。

2.Apexバッチのスケジューリング設定の方法

続いて、Apexバッチのスケジューリング設定の方法を見ていきたいと思います。

2-1.[設定]から設定

[設定]→[Apexクラス]→[Apexをスケジュール]ボタンをクリックします。
 

 

そして、ジョブ名や実行するApexクラス、実行頻度、実行時間を設定して保存を押します。
 

 
登録したジョブは[Apex ジョブ]の一覧で確認することができます。
 

 

ただこちらの方法だと、1時間に1回しか実行できません。。。
なんとも不便なお話かなと。。。

2-2.Apexコードから実行

続いてApexからのスケジュール設定です。
開発者の方であれば、こちらの方法は必ず覚えましょう!

こちらであれば分・秒単位でスケジュール設定が可能です!
1時間に1回しか実行できないとなると、テストに時間がかかりすぎて、日が暮れます。。。

その実行用コードがこれです!

上記を開発者コンソールで実行すれば毎時0分に実行されます。

パラメータの持ち方は下記のようになっています。
‘0 0 * * * ?’ = ‘秒 分 時 日 月’

テストでは即時実行するため、二番目の0を実行したい時間に書き換えることが多いと思いますので、この内容は覚えておきましょう!

3.スケジュールの削除

設定したスケジュールジョブは[設定]→[スケジュール済みジョブ]から削除することができます。
 

 

4.まとめ

いかがでしたでしょうか。

Apexバッチのスケジューリング方法はUI画面からの操作は正直しんどいです笑
匿名実行するコードも簡単なので、覚えやすいですね。

バッチのスケジュールテストするときは、開発者コンソールの匿名実行から実行しましょう。

皆さんもぜひ色々と試してみてください。
他にも色々と標準機能やSalesforce機能について紹介していますので、ご覧ください。

ではでは!