SalesforceのフローやプロセスビルダーでApexアクションを使用しようとした際に、予期しないエラーが発生したり、そもそもアクションがリストに表示されないといった問題に直面することがあります。ApexアクションはカスタムApexコードを呼び出す強力な機能ですが、設定不足や権限、ガバナー制限などの条件を満たしていないと動作しません。この記事では、Apexアクションを正しく利用するための基本設定と、問題が起きたときの確認手順を具体的に解説します。最初に全体像を把握し、その後原因を切り分けて対処できるようにします。
【要点】この記事で確認すること
- 最初に見る場所: フローの設定画面でApexアクションが選択できるか、Apexクラスのバージョン設定、プロファイル権限の有無。
- 切り分けの軸: Apexアクションが表示されないのか、実行時にエラーになるのか、権限エラーなのかガバナー制限エラーなのか。
- 注意点: 組織のApexバージョン設定やプロファイル権限は管理者のみ変更可能です。勝手に変更すると他の機能に影響するため、必ず管理者に確認してください。
ADVERTISEMENT
目次
1. Apexアクションの基本設定を確認する
Apexアクションを利用するには、事前に適切な設定が整っている必要があります。ここでは、フローでApexアクションを選択できるようにするための最低限の設定手順を説明します。
1-1. Apexクラスの作成と公開設定
Apexアクションとして呼び出すApexクラスは、グローバルメソッドとして定義し、適切なアノテーションを付ける必要があります。具体的には、クラス定義にglobalキーワードを使用し、メソッドに@InvocableMethodアノテーションを付けます。また、メソッドはglobal staticで宣言します。以下が基本的なサンプルです。
global class MyApexAction {
@InvocableMethod(label='My Action' description='Sample action')
global static List<MyOutput> execute(List<MyInput> inputs) {
// 処理
}
}
このクラスを保存したら、フローのアクション選択画面で「My Action」として表示されるようになります。ただし、表示されない場合はクラスの公開範囲やプロファイル権限が原因かもしれません。
1-2. プロファイル権限とアクセス権
Apexクラスへのアクセス権限は、プロファイルまたは権限セットで管理されます。フローの実行ユーザーが当該Apexクラスを実行できる権限を持っていないと、アクションが表示されないか、実行時に権限エラーが発生します。設定画面で「Apexクラスへのアクセス」を確認し、対象のクラスにチェックが入っていることを確認してください。管理者に依頼して権限を付与してもらいましょう。
2. Apexアクションが動作しない原因の切り分け
問題が発生した場合、まずは原因がどこにあるのかを切り分けることが重要です。以下に代表的なケースと確認手順を示します。
2-1. Apexアクションがリストに表示されない
フローのアクション要素でApexアクションを選択しようとしたときに、目的のアクションが表示されない場合があります。考えられる原因と対応を表にまとめました。
| 原因 | 確認方法 | 対応 |
|---|---|---|
| Apexクラスのアノテーション不足 | クラスに@InvocableMethodが付いているか確認 |
適切なアノテーションを追加して保存 |
クラスの公開範囲がglobalでない |
クラス定義でpublicやprivateになっていないか |
globalに変更 |
| フローのバージョンが古い | フロー設定のAPIバージョンがApexクラスより低い | フローのバージョンを最新に更新 |
| プロファイル権限がない | プロファイル設定でApexクラスアクセスを確認 | 権限を付与 |
2-2. 実行時にエラーが発生する
アクションは表示されるが、フロー実行中にエラーになる場合、Apexコード内部の問題が考えられます。フローのデバッグログを有効にして実行し、エラー内容を確認します。よくあるエラーとして、ガバナー制限(SOQLクエリ数超過、CPU時間超過など)や、null参照、メソッドの引数型不一致があります。エラーログの詳細は「設定」→「クイック検索」→「デバッグログ」から確認できます。
3. Apexアクションの利用条件と制限
Apexアクションには、フローやプロセスビルダーから呼び出すための固有の制限があります。これらを理解しておかないと、トラブル時に原因特定が難しくなります。
3-1. ガバナー制限とベストプラクティス
Apexアクションは通常のApexコードと同様にガバナー制限の対象です。特に、フローで大量のレコードを処理する場合、アクション内でSOQLやDMLを多用すると制限に引っかかりやすくなります。対策として、メソッド内でのバッチ処理やコレクションの活用、SOQLの効率化が必要です。また、フロー側で一度に渡すレコード数を抑えることも有効です。
3-2. 他の自動化手段との比較
Apexアクションと他の自動化方法を比較した表を以下に示します。ユースケースに応じて適切な手段を選択する参考にしてください。
| 手段 | 特徴 | 制限 | 使用例 |
|---|---|---|---|
| Apexアクション | カスタムロジックを実行できる | ガバナー制限、スケジュール不可 | 複雑な計算、外部連携 |
| プロセスビルダー | ノーコードで条件分岐 | 単純な処理向け、レコードトリガのみ | 更新時の値変更 |
| ワークフロールール | 定型的な自動化 | メール送信や項目更新のみ | 条件に応じたメール通知 |
| フロー(画面フロー・自動起動) | 複雑なプロセスをビジュアル設計 | ガバナー制限、画面フローはユーザー操作が必要 | 承認プロセス、多段階更新 |
4. 失敗パターンと再発防止策
実際に発生しやすい失敗パターンをいくつか挙げ、それぞれの再発防止策をまとめます。
4-1. 権限不足によるエラー
フローを実行するユーザーがApexクラスへのアクセス権限を持っていない場合、エラーが表示されます。このエラーは「Apexクラスへのアクセスがありません」といったメッセージでわかります。再発防止策として、フローの共有設定で権限セットを適用するか、Apexアクションを使用する前に必ずテストユーザーで動作確認を行います。また、権限変更は管理者に依頼する必要があるため、チーム内で手順を文書化しておくことが有効です。
4-2. Apexクラスのバージョン不一致
フローとApexクラスで使用するAPIバージョンが異なると、コンパイルエラーや動作不良の原因になります。特に、フローをアップグレードした後にApexアクションが動作しなくなるケースがあります。対策として、Apexクラスは常に最新のAPIバージョンで保存するか、フローのバージョンと合わせることを推奨します。バージョンはクラス編集画面の「バージョン設定」から変更できます。
4-3. 引数・戻り値の型不一致
Apexアクションの入力パラメータとフローで渡す値の型が合わない場合、実行時にエラーになります。例えば、フローから文字列を渡しているのにApex側が数値を期待している場合などです。これを防ぐには、Apexクラスの引数と戻り値の型をきちんと定義し、フロー側で同じデータ型の変数を用意します。開発時にはテストクラスを使って境界値を確認すると安心です。
5. 管理者に確認すべきポイント
Apexアクションのトラブルシューティングでは、一般ユーザーが変更できない設定も多く関わります。管理者に連絡する際は、以下の情報を伝えると問題解決がスムーズです。
- 問題が発生しているフローの名前と、エラーメッセージのスクリーンショット。
- Apexアクションとして使用しているクラス名と、そのクラスのAPIバージョン。
- 実行ユーザーのプロファイル名、および権限セットの有無。
- フローのAPIバージョンと、最後に変更した日時。
- 組織のガバナー制限のうち、関連しそうな値(SOQLクエリ数、CPU時間など)。
管理者はこれらの情報をもとに、権限設定やクラスの公開設定、バージョン管理を確認できます。特に、大規模な組織では複数のApexクラスが存在するため、特定のクラスだけ問題が起きているのかを切り分けることが重要です。
よくある質問
Q: Apexアクションが全く表示されません。何から確認すればいいですか?
A: まず、Apexクラスに@InvocableMethodアノテーションが正しく付いているか確認してください。また、クラスがglobalとして定義されているか、プロファイル権限があるかを順にチェックします。
Q: Apexアクション実行中に「System.LimitException: Too many SOQL queries」というエラーが出ます。
A: ガバナー制限に引っかかったエラーです。Apexコード内でSOQLクエリの回数が多すぎるため、ループ内でのクエリを減らすか、バッチ処理に変更する必要があります。
Q: 管理者に権限を追加してもらいましたが、それでもApexアクションが使えません。
A: 権限追加後、ユーザーのセッションが古いままの場合があります。ログアウトして再ログインするか、ブラウザを更新してください。また、権限セットが割り当てられているかもご確認ください。
まとめ
Apexアクションを利用する際の基本設定として、Apexクラスのアノテーション、公開範囲、プロファイル権限が必須です。問題が発生した場合は、表示されないのか実行時エラーなのかを切り分け、権限・バージョン・ガバナー制限の順に確認します。管理者への連絡時には、フロー名、クラス名、エラー内容を明確に伝えることで解決が早まります。再発防止策として、テストクラスの作成やバージョン管理を徹底し、定期的な動作確認を習慣づけることをおすすめします。
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Office・仕事術の人気記事ランキング
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Excel】文字が入っているセルの「個数」を数える!COUNTA関数の簡単な使い方
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Outlook】予定表の「祝日」が表示されない!最新カレンダーの追加と二重表示の修正手順
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
