できることコラム 無料トライアルを相談する
開発例 No.20

Salesforceで毎晩ステータスを自動更新する定期処理の作り方

期限を過ぎたレコードのステータスを毎朝手で直している場合、決まった時刻に動く定期処理に任せる方法があります。このページでは、スケジュールトリガーフローと、スケジュール済み Apex・Apex 一括処理の違い、作業の流れ、2026年10月時点の制限と注意点をまとめます。

執筆 徳 雅俊(Salesforce 認定アドミニストレーター/Platform デベロッパー)・2026.10.23 公開

このページは、ご依頼いただける開発の例の解説です。実際の導入事例ではありません。機能の説明は、末尾の Salesforce 公式の資料で確かめた内容です。

この内容で相談する

こんなことで困っていませんか

  • 毎朝、日付を過ぎたレコードを探して、ステータスを一件ずつ手で書き換えている[1]
  • 担当者が休んだ日は更新が後回しになり、一覧の状況が実際とずれる[1]
  • 対象の件数が増え、画面での手作業では追いつかなくなってきた[6]
  • フローで組むか Apex で組むか、どちらが合うのか決められない[1][3]
この開発でつくる仕組み(イメージ)
  1. 決まった時刻に起動毎日・毎週などの頻度で動く
  2. 条件で対象を選ぶ期限を過ぎたレコードなど
  3. ステータスを更新フローかApex一括処理で
  4. 結果を確かめるApexジョブで成否と処理件数

本文の説明を図にしたものです。実際の構成は、組織の設定によって変わります。

なぜ起きるのか

日付が過ぎたことに合わせてステータスを変えるには、誰かがレコードを開かなくても、決まった時刻に動く仕組みが要ります。Salesforce では、スケジュールトリガーフローか、スケジュール済み Apex でこれを用意します。[1][3]

スケジュールトリガーフローは、指定した時刻と頻度で、条件に合うレコードのまとまりに対して動きます。頻度は 1 回、毎日、毎週から選びます。[1]

Apex スケジューラーは、Schedulable インターフェースを実装したクラスを決まった時刻に動かします。Trailhead では、Apex 一括処理を使った日次・週次の保守作業に向く仕組みとして紹介されています。[3][9]

対象が数千件から数百万件になると、通常の処理の制限を超えるおそれがあります。Apex 一括処理は、レコードをバッチに分けて非同期で処理するための仕組みです。[6]

直し方の選択肢

処理の中身と対象の件数で、向く方法が変わります。[1][5][6]

  • 方法 1スケジュールトリガーフロー条件に合うレコードの項目を書き換える処理なら、フローで組めます。自動起動フローの開始要素でスケジュールトリガーを設定し、オブジェクト、検索条件、開始時刻、頻度を指定します[1][2]
  • 方法 2Apex 一括処理件数が多い処理に向きます。既定では 200 件ずつのトランザクションに分かれ、ガバナ制限はトランザクションごとにリセットされます。すべてのバッチの後に、メール送信などの後処理も組めます[5][6]
  • 方法 3スケジュール済み Apex との組み合わせApex スケジューラーから Apex 一括処理を動かし、毎晩決まった時刻に一括処理を始める形です。スケジュールは設定画面からも登録できます[3][9]

作業の流れ

  1. 対象を決める:どのオブジェクトの、どの条件のレコードを、どの値に変えるかを書き出します[1]
  2. 件数を見積もる:1 日あたりの対象件数を確かめ、フローの制限に収まるか、Apex 一括処理が要るかを判断します[2][5]
  3. 作る:フローなら開始要素でスケジュールを設定します。Apex なら Database.Batchable と Schedulable を実装したクラスを書きます[1][4][5]
  4. テストする:Apex のテストでは、Test.startTest と Test.stopTest の間でジョブを動かし、終わってから結果を確かめます。リリースには最小コードカバー率の要件があります[4][8]
  5. スケジュールを登録する:[設定] の [クイック検索] に「Apex クラス」と入力し、[Apex クラス] の [Apex をスケジュール] で頻度、開始日、終了日、希望開始時刻を指定します[3]
  6. 動きを見守る:[スケジュール済みジョブ] で予定を、[Apex ジョブ] で成否や処理件数を確かめます[3][4][7]

気をつけること

  • 実行は指定した時刻より遅れる場合があります。Salesforce は、サービスの状況によって遅れると案内しています[3]
  • 時刻の基準が違います。スケジュールトリガーフローの開始時刻は組織の既定のタイムゾーン、System.schedule メソッドはユーザーのタイムゾーンが基準です[2][4]
  • 2026年10月時点の制限では、同時にスケジュールできる Apex ジョブは 100 件、同時にキューに入れるか実行できる一括処理ジョブは 5 件です。フロー、Apex とも、24 時間あたりの実行数に上限があります[2][4][5]
  • 失敗時の戻り方が違います。Apex 一括処理では、後のバッチが失敗しても、先に成功したバッチの更新は戻りません。スケジュールトリガーフローでは、要素の一部のレコードが失敗すると全件がロールバックされ、成功したレコードが再試行されます[2][5]
  • 実行する主体を確かめます。スケジューラーはシステムとして動き、ユーザーの権限に関係なくクラスを実行します。スケジュールトリガーフローは、デフォルトのワークフローユーザーが実行します[2][4]
  • 有効なスケジュール済みジョブがあるクラスは、画面からは更新できません。メタデータ API を使ったリリースで更新します[4]

想定工数の目安

毎晩の定期処理で、ステータスを自動で更新6〜12時間

想定工数は、要件の確認から動作確認・本番反映の手順までを含む実働時間です。※Salesforce の環境(構築済みの仕組みや設定など、さまざまな要素)や、要件によって工数は大幅に前後するため、あくまでも目安です。

質問と答え

フローと Apex、どちらで作ればよいですか?

条件に合うレコードの値を書き換えるだけなら、スケジュールトリガーフローで組めます。Trailhead では、数千件から数百万件のような大規模な処理には Apex 一括処理を使うよう案内しています。その場合は、スケジュール済み Apex から一括処理を動かす形が候補になります。[1][6][9]

指定した時刻ちょうどに動きますか?

遅れる場合があります。Salesforce は、実際の実行はサービスの状況によって遅れることがあると案内しています。また、1 回だけ実行するよう指定したフローは、その日時が過ぎていると実行されません。[2][3]

処理が失敗したことには、どう気づけますか?

Apex 一括処理では、[Apex ジョブ] ページの [状況の詳細] 列に最初のエラーの説明が表示され、詳細は一括処理クラスを最後に変更したユーザーにメールで届きます。スケジュールトリガーフローでは、組織が制限に達した場合にフローエラーメールが送信されます。[2][7]

Sandbox を更新すると、スケジュール済みフローはどうなりますか?

Sandbox の更新が完了すると、Sandbox で有効だったスケジュール済みフローは、更新後の Sandbox で実行できる状態になります。更新の後は、どのフローが有効になっているかを確かめます。[2]

出典

  1. スケジュールトリガーフローhelp.salesforce.com/s/articleView?language=ja&type=5&id=platform.flow_concepts_trigger_schedule.htm(2026-10-23 確認)
  2. スケジュールトリガーフローに関する考慮事項help.salesforce.com/s/articleView?language=ja&type=5&id=platform.flow_considerations_trigger_schedule.htm(2026-10-23 確認)
  3. Apex ジョブのスケジュールhelp.salesforce.com/s/articleView?language=ja&type=5&id=platform.code_schedule_batch_apex.htm(2026-10-23 確認)
  4. Apex スケジューラー(Apex 開発者ガイド)developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_scheduler.htm(2026-10-23 確認)
  5. Apex の一括処理の使用(Apex 開発者ガイド)developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_batch_interface.htm(2026-10-23 確認)
  6. Apex 一括処理の使用(Trailhead:非同期 Apex)trailhead.salesforce.com/ja/content/learn/modules/asynchronous_apex/async_apex_batch(2026-10-23 確認)
  7. Apex ジョブキューの監視help.salesforce.com/s/articleView?language=ja&type=5&id=platform.code_apex_job.htm(2026-10-23 確認)
  8. テストとコードカバー率(Apex 開発者ガイド)developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_code_coverage_intro.htm(2026-10-23 確認)
  9. Apex スケジューラーを使用したジョブのスケジュール(Trailhead:非同期 Apex)trailhead.salesforce.com/ja/content/learn/modules/asynchronous_apex/async_apex_scheduled(2026-10-23 確認)

環境に合わせた進め方は、相談フォームから一言でどうぞ。

この内容で相談する 開発例の一覧へ戻る
まずは20時間の無料トライアルから 無料トライアルを相談する
YOUR NEXT STEP

まずは、ひとつの
「こうしたい」から。

いただいた内容を確認し、ご入力のメールアドレスにご連絡します。

送信内容は、プライバシーポリシーに沿って取り扱います。