ADVERTISEMENT

【Salesforce】スケジュールトリガーフローが想定と違う時の管理者が見るべき原因

【Salesforce】スケジュールトリガーフローが想定と違う時の管理者が見るべき原因
🛡️ 超解決

スケジュールトリガーフローは、特定の日時や繰り返し間隔で自動実行される強力な自動化機能です。しかし、設定したはずの時間に実行されなかったり、実行されても期待した結果が得られないというトラブルは少なくありません。管理者としては、原因を迅速に特定して修正したいところです。本記事では、スケジュールトリガーフローが想定と異なる動作をする場合に、管理者が確認すべきポイントを網羅的に解説します。原因を切り分けるための具体的な手順も示しますので、ぜひ参考にしてください。

【要点】この記事で確認すること

  • 最初に見る場所: フローの有効化状態、スケジュール設定(日時・繰り返し)、フローバージョンの状態(アクティブかどうか)。
  • 切り分けの軸: 時間設定の誤り、タイムゾーンの影響、条件式の不備、権限やガバナ制限、組織の自動化上限。
  • 注意点: スケジュールトリガーフローは組織のタイムゾーンに依存します。また、大量のレコードを処理する場合は非同期実行の遅延が発生する可能性があります。

ADVERTISEMENT

1. スケジュールトリガーフローが意図通りに動作しない原因の全体像

スケジュールトリガーフローが想定通りに動作しない原因は、大きく分けて以下の4つに分類できます。それぞれについて事前に把握しておくことで、問題発生時の切り分けが容易になります。

  • 設定ミス: スケジュールの日時、繰り返し間隔、開始日、終了日などのパラメーターが誤っているケース。例えば、開始日時を過去に設定してしまい、一度も実行されないという事例がよくあります。
  • 条件の不整合: フローの開始条件(レコードが条件を満たしているか)や、フロー内の条件式が正しくないケース。数式の丸め誤差や、参照する項目の変更が原因となることもあります。
  • ガバナ制限・プラットフォーム制限: 同時実行数、キューイングの遅延、API制限、フローの実行時間制限などに抵触するケース。Enterprise Editionでは同時実行数が最大20に制限されており、超過するとキューで待機します。
  • 権限や組織設定: フローを実行するユーザの権限不足、プロファイルや権限セット、組織の自動化設定が原因のケース。また、共有ルールによりレコードにアクセスできない場合もあります。

2. 最初に確認すべき設定項目:スケジュールと開始条件

まず、スケジュールトリガーフローの設定自体に問題がないかを確認しましょう。以下の手順でチェックしてください。

  1. フローの一覧から該当フローを開く:「設定」→「プロセスオートメーション」→「フロー」でフローを検索します。
  2. フローのバージョン状態を確認する:アクティブになっているバージョンは最新ですか?複数バージョンがある場合、意図したバージョンがアクティブになっているか確認します。古いバージョンがアクティブのまま新しいバージョンでスケジュールを設定しても実行されません。
  3. スケジュール設定を開く:「スケジュール」タブで、開始日時、頻度(毎時、毎日、毎週など)、終了条件が正しいか確認します。特に、開始日時が過去になっていないか注意します。
  4. 条件式を確認する:「条件」タブで、フローを開始する条件が正しいレコードを対象にしているか確認します。例えば「Created Date」や「Owner」などのフィールドを使う場合、想定と異なるフィルターになっていないかチェックします。
  5. タイムゾーンを確認する:「スケジュール」設定では組織のタイムゾーンが適用されます。組織のタイムゾーンがUTC以外の場合、意図した時刻とずれる可能性があります。「設定」→「会社の設定」→「組織のタイムゾーン」で確認しましょう。

2.1 タイムゾーン設定の注意点

組織のタイムゾーンは、スケジュールフローの実行時刻に直接影響します。例えば、東京(UTC+9)の組織で午前9時に実行するよう設定した場合、内部的にはUTCの0時にスケジュールされます。夏時間を採用している地域では、切り替え時に1時間ずれが生じる可能性があるため、事前にテストすることをおすすめします。

3. フローが実行されないケース:ガバナ制限とエラーログの確認

設定が正しいにもかかわらずフローが実行されない場合、ガバナ制限やエラーログを確認します。

まず、ガバナ制限として、組織の同時実行フロー数やキューイング制限があります。Salesforceでは、スケジュールトリガーフローの同時実行数は組織のエディションによって異なります(例:Enterprise Editionでは最大20)。また、一度に大量のフローがスケジュールされると、キューイングされ実行が遅延する可能性があります。確認方法は「設定」→「プロセスオートメーション」→「フロー」→「スケジュールフローの監視」から、現在のジョブキュー状況を確認できます。

次に、エラーログを確認します。フロー実行時にエラーが発生した場合、詳細は「フロー詳細」の「失敗したフロー」や「監査証跡」から辿れます。具体的な手順は以下の通りです。

  1. 「設定」→「プロセスオートメーション」→「フロー」→該当フローの「詳細」を開く。
  2. 「フローバージョン」のアクティブなバージョンを選択し、「失敗したフローの監視」をクリック。
  3. エラーが一覧表示されます。エラーメッセージを確認し、一般的なエラーとして「Apex CPU time limit exceeded」「Maximum SOQL queries exceeded」「Flow skipped due to unavailability of required resource」などが考えられます。
  4. 特に「ガバナ制限」関連のエラーは、組織の制限値に抵触していないか確認してください。制限値は「設定」→「クイック検索」→「組織の設定」→「制限」で確認できます。

エラーが記録されていないのに実行されない場合は、スケジュールそのものが登録されていない可能性があります。スケジュールの有効化を確認し、必要なら「スケジュールを有効化」ボタンを押します。

3.1 監査証跡の活用

「設定」→「イベント監視」→「フローの監査」では、フロー実行の開始・終了時刻、結果(成功/失敗)を確認できます。この情報は、フローが実行されたかどうかの確認に役立ちます。

4. 実行タイミングがずれる原因:タイムゾーンとバッチ処理の影響

スケジュール設定は正しいのに、実行された時刻が少しずれていたり、数分から数十分遅れることがあります。これはSalesforceの非同期処理の特性によるものです。

  • タイムゾーンの影響: スケジュールは組織のタイムゾーンに基づきます。ただし、Salesforceの内部処理はUTCで行われるため、タイムゾーン変換のタイミングによって数分のずれが生じることがあります。また、夏時間の切り替え時には誤差が大きくなることがあります。
  • バッチ処理のキューイング: 同時に多くのスケジュールフローが実行予定だったり、他の自動化プロセス(ワークフロー、プロセスビルダー、他のフロー)が動作していると、キューイングにより実行が遅延します。特に大量のレコードを処理するフローは、リソース不足で遅延しやすくなります。
  • バージョンの更新: フローを修正して新しいバージョンをアクティブにした場合、古いバージョンのスケジュールがまだ残っている可能性があります。スケジュールはバージョンに紐づいているため、必ず新しいバージョンに対してスケジュールを再設定する必要があります。

これらの要因を切り分けるには、フローの実行履歴を確認して、実際の実行開始時刻とスケジュール時刻の差を測定します。許容範囲かどうかはビジネス要件によりますが、数分程度であれば通常問題ありません。ただし、継続的に大きな遅延が発生する場合は、組織の負荷や制限値を確認し、必要に応じてSalesforceサポートに問い合わせます。

5. フロー内の処理結果が想定と異なる場合:条件と要素の見直し

フローは実行されたが、処理結果が期待通りでない場合、フロー内の条件や要素のロジックに問題があります。よくある失敗パターンとして以下があります。

  • 条件式の誤り: 例えば「レコードのステータスが’完了’の場合」という条件が「等しい」ではなく「含む」になっているなど。Salesforceの数式エディタで実際の値を確認しましょう。
  • ルックアップや参照関係の誤り: 関連レコードを取得する際に、参照関係が正しく設定されていない。親子関係の参照チェーンが切れている場合、正しいレコードが取得できません。
  • 更新対象の誤り: フローが更新するレコードが意図しないレコードになっている(例:すべてのレコードを更新してしまう)。特に条件を指定しない場合、全レコードが対象になります。
  • ループ処理の制限: 大量のレコードをループ処理する場合、1回のフロー実行で処理できるレコード数(ガバナ制限により最大10万件程度)を超えていないか確認。また、1件あたりの処理時間が長いと全体のタイムアウトにつながります。

具体的な確認手順として、フローのデバッグ機能を使う方法があります。スケジュールトリガーフローは直接デバッグできませんが、テスト用のレコードを作成して条件に合うか確認するか、代替としてプロセスビルダーなどでテストすることも検討します。または、フローを複製して手動で実行できる「自動起動フロー」に変換してテストする方法もあります。

5.1 数式やフィルターのテスト

フロー内で使用している数式やクエリが正しいかどうかも確認します。例えば「すべての条件に一致するレコード」というフィルターが複雑な場合、意図せずレコードが除外されている可能性があります。数式エディタで実際のレコードをテスト入力として確認するのが確実です。

6. 組織の設定や権限が原因となるケース

スケジュールトリガーフローはシステム管理者権限で実行されるため、通常は権限問題が発生しにくいですが、以下のような例外があります。

  • プロファイルや権限セット: フロー内で特定のオブジェクトに対する参照・編集権限が必要な場合、システム管理者であれば問題ありませんが、もしフローを実行するユーザがシステム管理者以外のユーザとして実行される設定になっている場合(例:指定ユーザで実行)、そのユーザに権限が不足している可能性があります。
  • 共有ルール: レコードへのアクセスが共有ルールに制限されている場合、フローは共有ルールをバイパスできません。必要に応じて、「フローで共有ルールを無視して更新」という設定を有効にする必要があります。ただし、この設定は注意して使用しないとデータアクセスを広げすぎるリスクがあります。
  • 組織の自動化設定: 組織の「自動化設定」でトリガーの有効/無効が設定されている場合、スケジュールトリガーフローも影響を受けることがあります。「設定」→「自動化設定」で「フローのトリガーを許可」がオンになっているか確認します。
  • レコードロックやフロー割り当て: 他の自動化プロセスが同じレコードをロックしている場合、デッドロックが発生する可能性があります。競合を避けるために、フロー内でコミット単位を調整する必要があります。

6.1 共有ルールの設定確認

「フローで共有ルールを無視して更新」は、フローの「高度な設定」にあります。通常はオフですが、システム管理者用のフローで必要になることがあります。ただし、この設定をオンにすると、共有ルールによる制限が無視されるため、セキュリティ上の影響を評価してから使用してください。

7. よくある質問とその回答

Q: スケジュールトリガーフローが実行された形跡がありません。どのように確認すればよいですか?
A: まず、フローの「スケジュール」タブで「スケジュールを有効化」されているか確認します。次に「監視」メニューから「スケジュールフローの監視」で過去の実行履歴を確認します。履歴がない場合はスケジュールが正しく登録されていない可能性が高いです。新しくスケジュールを設定し直してみてください。

Q: フローの実行が遅延しているようです。どうすれば改善できますか?
A: 遅延の原因は、組織の負荷や他の自動化との競合が考えられます。実行時間帯を変更する、フロー内で処理するレコード数を減らす、非同期パス(キューイング)を利用するなどの対策が有効です。また、ガバナ制限に近い値を確認し、必要に応じてSalesforceサポートに相談してください。

Q: フロー内でエラーが発生しているが、そのエラーの詳細がわかりません。
A: フローの詳細画面で「失敗したフローの監視」を開き、エラーメッセージを確認します。よくあるエラーとして「Apex CPU time limit exceeded」は時間切れ、「Maximum SOQL queries」はクエリ制限違反です。これらの場合はフローの処理を最適化する必要があります。また、「Error occurred while running the flow」という汎用エラーの場合、フローの条件や要素に問題がある可能性が高いです。

Q: スケジュールトリガーフローとプロセスビルダーの違いは何ですか?
A: プロセスビルダーはレコードの作成・更新・削除時にトリガーされ、条件に応じてアクションを実行します。一方、スケジュールトリガーフローは特定の日時や繰り返しで実行されます。どちらも自動化に使えますが、スケジュールトリガーフローは時間ベースの処理に特化しています。処理内容が複雑な場合はフロー、単純な場合はプロセスビルダーという使い分けが一般的です。

Q: フローを修正した後、スケジュールを再設定する必要がありますか?
A: はい、フローのバージョンを新しくアクティブにした場合、スケジュールは古いバージョンに紐づいたままです。新しいバージョンにスケジュールを設定し直してください。古いバージョンは非アクティブにしても、スケジュールが残っていると実行されてしまうため注意が必要です。

以下に、スケジュールトリガーフローが想定通りに動作しない原因とその対策の比較表を示します。

原因 症状 確認箇所 対策
スケジュール設定ミス フローが全く実行されない 開始日時、繰り返し間隔、タイムゾーン 設定を修正し、必要に応じてスケジュールを再作成
条件式の誤り フローは実行されるが、対象レコードがない・結果がおかしい 条件タブのフィルター、数式 条件式を修正し、テストレコードで動作確認
ガバナ制限違反 フローが途中でエラーになる、実行が遅延する エラーログ、監視画面、組織の制限設定 処理を分割する、時間帯を分散する、クエリを最適化
権限不足・共有ルール フローは成功しているがレコードが更新されない 権限セット、共有設定、フローの高度な設定 権限を付与、または共有ルールを無視する設定を検討
バージョン管理の誤り 修正したのに古い動作のまま アクティブなバージョン、スケジュールとバージョンの紐付け 新しいバージョンをアクティブにし、スケジュールを再設定

8. まとめ

スケジュールトリガーフローが想定通りに動作しない場合、原因は設定ミス、条件の不整合、ガバナ制限、権限関連など多岐にわたります。まずはフローの有効化状態とスケジュール設定を確認し、次にエラーログや監視画面で実行状況を把握します。タイムゾーンやバッチ処理による遅延も考慮し、必要に応じてフローのロジックを見直します。組織の自動化上限や権限設定も忘れずにチェックしましょう。これらの手順を踏めば、多くの問題は解決可能です。それでも解決しない場合は、Salesforceのサポートやコミュニティを活用して原因を特定してください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

ADVERTISEMENT