IT人材をお探しの方は、まずはお電話ください。担当営業がすぐにご要望にマッチした人材をご提案いたします。
tel:03-6409-6766 お急ぎの方はお電話ください

ブログTOP > IT・技術関連 > System.scheduleを使ってSalesforceを効率良く運用しよう

System.scheduleを使ってSalesforceを効率良く運用しよう

IT・技術関連 更新日:2024.09.05
エンジニア採用
System.scheduleを使ってSalesforceを効率良く運用しよう

System.schedule Salesforce上でオブジェクトを実行する際に、指定した時間に実行してくれる”System.Schedule”機能があります。この機能を使用すると、まとめてオブジェクトを処理できるため、管理しやすいというメリットがあります。 しかし、その前にクラスの呼び出しやインターフェースの実装などと言った事前準備が必要となってきますので、知っておくべき事前知識も漏らさず解説していきます。

System.scheduleの全体像を掴もう

System.scheduleは、Salesforceにおいてscheduleインターフェースを実装するSystemクラスの1つで、型はStringとなります。 クラスの1種なのでデータや命令が書かれたものであると同時に、String型なので文字列を格納出来る変数の1種でもあります。

System.scheduleで一体何が出来るのか

スケジューラとも呼ばれるSystem.scheduleを使う事で、指定した時間にSalesforceのApexクラスを実行する事が出来ます。このインターフェースを使う事でデータをまとめて処理出来るので、週毎に進捗の確認が出来るというメリットがあります。 System.scheduleを使って1度に処理出来る仕事の数は100までです。スケジュール済みApexがカスタムビューに表示される様にしておく事で、現在までに完了したタスクの数を確認する事が出来ます。 他にも、スケジュール済みのタスク数をカウントするには、CronTriggerあるいはCronJobDetailをプログラム上に表示させるという方法もあります。

System.scheduleを使う際に気を付けたいポイント

System.scheduleではタスクを実行出来る時間を指定出来ますが、クラウド上の状況によりその時間が若干遅れる場合があります。 加えてトリガからタスクを設定させる際には、バグの原因にもなりかねません。100以上のタスクをスケジュール設定しない様に注意が必要です。 また、APIや複数のスケジュールを一括で更新する事は苦手であるため、そういった内容をスケジュールしたい際は小分けにして行いましょう。

Apexクラスを呼び出そう

System.scheduleの実装方法をご紹介します。まずはSalesforce内でスケジュールしたいクラスを呼び出す必要があります。その為に必要なコードを以下に示します。
global class SomeClass implements Schedulable {
    global void execute(SchedulableContext ctx) {
        // awesome code here
    }
}
このコードでは、まず”Schedule contextオブジェクト”をパラメーターにする事を宣言しています。続いてスケジュールが完了したら、Crontriggerオブジェクトを作成してスケジュール済みである事を把握できる様にします。

Scheduleインターフェースを実装しよう

SalesforceでSystem.scheduleを実行する前に、Schedulableインターフェースでクラスを実装する必要があります。 ポイントとしては、System.scheduleメソッドを宣言するには変数globalあるいは変数publicで宣言する必要があるという事です。実際には以下の様なコーディングを行います。
global class scheduledMerge implements Schedulable {
   global void execute(SchedulableContext SC) {
      sea otter reserved Association = new sea otter reserved Association();
   }
}

指定した時刻にインスタンスが実行される様にしよう

クラスの呼び出し及びSchedulableインターフェースによる実装が完了したら、いよいよSystem.scheduleの出番です。 以下の様なコードを書き、指定した時刻にタスク処理が行われるようにします。
Sea otter reserved Association reminder = new Sea otter reserved Association();
// 月、日(必要に応じて年も)と時、分、秒を記入
String sch = '28 43 17 11 5 ?';
String jobID = System.schedule('Sea otter reserved Association', sch, reminder);

コードの解説

1行目では演算子newを用いてコードを初期化した上で、タスク名を変数の名前としています。 続いて2・3行目ではタスクを実行する時間を秒、分、時、日、月の順で指定します。この場合、5月11日の17時43分28秒に実行される様にコーディングされています。 文末の?は「特に日時を指定しない」という意味で使われていて、月または週当たりの日を指定する時に入れます。 4行目では、System.Scheduleを使ってSalesforceに指令しています。括弧内において、第1引数にはタスク名、第2引数にはCron Expression、第3引数にはschedulable classを入力します。

まずはSystem.Scheduleを使ってみよう

System.Schedule機能自体を使うのはそれほど難しくありませんが、クラスを呼び出したりインターフェースを実装したりするなどの事前準備が、少々煩雑です。 そのため、最初はこの記事や参照記事のコードをそのままコピーして使用し練習するとよいでしょう。その際に、タスク名(今回はSea otter reserved Associationの箇所)などは、そのままではなく状況によって変えて使用してください。 これが出来ればSalesforceの運用効率がより上げられます。少しずつチャレンジしてみてはいかがでしょうか。]]>

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニアAWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。

・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
ITエンジニアの派遣を利用したい企業様へ
ITエンジニアを派遣で採用したい企業様へ
  • 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
  • すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!

当社のITエンジニア派遣サービスは

  • 派遣スピードが速い!(最短即日)
  • 4,500名のエンジニアから貴社にマッチした人材を派遣
  • 正社員雇用も可能

こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。

無料相談のお申し込みはこちら
IT・技術関連の記事一覧へ

カテゴリから記事を探す

すべての記事一覧へ