function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
ruparuparuparupa 

毎月1回別の日にApexスケジュールを実行する方法について

お世話になっております。

Apexのスケジュールで、毎月1回、それぞれ別の日に動くようにしたいと思っています。
現在考えている実装方法は、
レコードでApexスケジュールを動かしたい日(例えば「2016/1/1」、「2016/2/2」、、など)をデータとして保持させ、
Apexスケジュールとしては毎日動かして、動いた日が保持させたデータの日であれば処理を実行、そうでなければ何もしないというような
実装をしようかと考えているのですが、、他にもっとスマートなやり方はありますでしょうか。
ご知恵を拝借したく、宜しくお願い致します。
Best Answer chosen by ruparupa
hammmhammm
System.Schedule メソッドの使用を検討した方が良いかと思います。
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_scheduler.htm
https://trailhead.salesforce.com/ja/asynchronous_apex/async_apex_scheduled

1.スケジュールレコードの作成
 実行日を登録する。

2.スケジュールレコードの作成時、Trigger/プロセスビルダーで処理呼び出し
 スケジュールレコードで登録された実行日でApexバッチのスケジュールを行う。

All Answers

hammmhammm
System.Schedule メソッドの使用を検討した方が良いかと思います。
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_scheduler.htm
https://trailhead.salesforce.com/ja/asynchronous_apex/async_apex_scheduled

1.スケジュールレコードの作成
 実行日を登録する。

2.スケジュールレコードの作成時、Trigger/プロセスビルダーで処理呼び出し
 スケジュールレコードで登録された実行日でApexバッチのスケジュールを行う。
This was selected as the best answer
ruparuparuparupa
hammmさん、ご回答ありがとうございます。

スケジュールレコードというのはカスタムオブジェクトなどでつくるということですよね。
検討させていただきます!ありがとうございます。
ruparuparuparupa
スケジュールを削除したいときはsystem.abortjobメソッドで良いと思いますが、更新ってできますかね?
スケジュールレコードが更新されたら作成時につくられたスケジュールを削除して新しくつくるのがよいですかね。
hammmhammm
ruparupaさん

今のところ実行時間の変更はできないので、作り直すしかなさそうです。
ruparuparuparupa
hammmさん

ありがとうございます!