ADVERTISEMENT

【Salesforce】キャンペーンメンバーを一括更新したい時の注意点

【Salesforce】キャンペーンメンバーを一括更新したい時の注意点
🛡️ 超解決

Salesforceでキャンペーンを運用していると、キャンペーンメンバーのステータスや属性を一括で更新したい場面がよくあります。たとえば、イベント参加者のフォローアップ状況を変更したり、リードの評価をキャンペーン単位で更新するケースです。しかし、キャンペーンメンバーはキャンペーンとリード・取引先責任者との関連を持つ特殊なオブジェクトで、一括更新にはいくつかの注意点があります。本記事では、実際に発生しやすいトラブルとその原因、適切な更新方法を選ぶための基準を解説します。

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

  • 最初に見る場所: 使用するツール(Data Import Wizard、Data Loader、Workbenchなど)の公式ドキュメントと、組織の権限設定を確認します。
  • 切り分けの軸: 更新対象が標準フィールドかカスタムフィールドか、更新方法がUIかAPIか、処理するレコード数が大量かどうかで最適な方法が変わります。
  • 注意点: キャンペーンメンバーには一意の外部IDが存在しないため、重複更新や誤更新を防ぐために更新キーと対象レコードの特定を慎重に行ってください。また、一度キャンペーンに関連付けられたレコードのステータスは更新できますが、キャンペーンから削除する場合には別の制約があるため注意が必要です。

ADVERTISEMENT

キャンペーンメンバーの一括更新でよくあるトラブル

データローダでの更新エラー

Data Loaderを使ってキャンペーンメンバーを更新する際、エラーが発生するケースが多々あります。最も多い原因は、更新キーとして指定する項目の不一致です。キャンペーンメンバーには取引先責任者IDやリードIDとキャンペーンIDの組み合わせが事実上の一意キーとなりますが、CSVにこれらのIDを正確に含めていないとエラーになります。また、更新対象のレコードが他のプロセスでロックされている場合もエラーが発生します。

Data Import Wizardでの制限

Data Import Wizardでは、一度に処理できるレコード数に上限があります。標準では5万件までですが、組織のエディションによってはそれ以下になることもあります。また、更新できる項目も標準項目に限られることが多く、カスタム項目を含む更新には対応していない場合があります。大量のデータやカスタム項目を扱う場合には、Data LoaderやAPIの利用を検討する必要があります。

更新後ステータスが正しく反映されない

キャンペーンメンバーのステータスは、キャンペーンとメンバーの関連の中で管理されます。一括更新を行った後、ステータスが期待通りに変わらないことがあります。これは、ワークフロールールやプロセスビルダー、フローがステータス変更を検知して他の処理を実行したり、ステータスの選択リスト値が組織で変更されている場合に発生します。更新後の動作を事前にテスト環境で確認することが重要です。

一括更新前に確認すべき項目

オブジェクト権限とフィールドレベルセキュリティ

キャンペーンメンバーオブジェクトに対して、更新を実行するユーザが「編集」権限を持っているか確認してください。さらに、更新したいフィールドに対するフィールドレベルセキュリティが読み取り専用になっていないかもチェックが必要です。特にカスタム項目は、プロファイルや権限セットで明示的に編集権限を与えなければ更新できません。

重複ルールの設定

組織で重複ルールが有効になっている場合、一括更新時に意図しない重複レコードが作成されることがあります。キャンペーンメンバーはキャンペーンIDとリードIDまたは取引先責任者IDの組み合わせで一意性が保たれるべきですが、重複ルールがそれ以外の条件で設定されていると更新が拒否される可能性があります。重複ルールの条件を事前に確認し、必要なら一時的に無効化することも検討してください。

トリガやフローによる自動処理への影響

キャンペーンメンバーの更新をトリガーにして、ApexトリガやProcess Builder、フローが起動する場合があります。一括更新によって大量のレコードが変更されると、ガバナ制限に引っかかったり、他の処理に影響を与えたりする可能性があります。また、トリガ内でさらにキャンペーンメンバーを更新するようなループが発生すると、エラーになるため注意が必要です。事前に関連する自動化プロセスを洗い出し、テスト環境で影響を確認してください。

状況別の更新方法比較表

更新方法 対応レコード数 対応フィールド スケジュール実行 注意点
Data Import Wizard 最大5万件 主に標準項目 不可 UI操作が簡単だが、大量データやカスタム項目には不向き
Data Loader 数百万件(制限あり) 全ての項目 コマンドラインで可能 更新キーの指定が重要。エラーログの確認が必要
Workbench 1万件程度 全ての項目 不可 ブラウザベースで手軽だが、大量データには不向き
Apexバッチ 無制限(ガバナ制限内) 全ての項目 可能 開発が必要。テストクラスやガバナ制限に注意
Salesforce API API制限に依存 全ての項目 外部システムから可能 バッチサイズや並列処理に注意。カスタムコードが必要な場合あり

一括更新の具体的な手順(Data Loaderを使用する例)

ここでは、Data Loaderを使ってキャンペーンメンバーを更新する手順を説明します。この手順は、CSVファイルに更新したいレコードのIDと変更後の値を準備することを前提としています。

  1. Data Loaderをダウンロードし、インストールします(Salesforceの組織に合わせたバージョンを選んでください)。
  2. CSVファイルを準備します。必須項目として「Id」(キャンペーンメンバーのレコードID)を含め、更新したいフィールド(例:Status)を追加します。Idはデータの一意性を保証するために不可欠です。キャンペーンIDとリードIDの組み合わせでは一意にならないため、必ずレコードIDを使用してください。
  3. Data Loaderを起動し、「Update」操作を選択します。オブジェクトに「CampaignMember」を指定し、CSVファイルをマッピングします。マッピングでは、CSVの各列をSalesforceの項目に対応付けます。このとき、Idは「Id」フィールドにマッピングされます。
  4. 設定ファイルでバッチサイズを調整します。大量レコードを更新する場合、適切なバッチサイズ(200〜500件程度)を設定してください。大きすぎるとタイムアウトエラーが発生します。また、「Bulk APIを使用」オプションを有効にすると、より大規模なデータを効率的に処理できます。
  5. 更新を実行します。処理中は進捗が表示され、完了後に成功レコード数とエラーレコード数が出力されます。エラーが発生した場合は、エラーログファイルを確認して原因を特定します。よくあるエラーとしては、「MALFORMED_ID」や「REQUIRED_FIELD_MISSING」などがあります。

失敗しやすい操作パターンと対処法

キャンペーンメンバーの外部IDを間違える

キャンペーンメンバーには標準の外部ID項目がありません。そのため、更新キーとしてレコードIDを使うのが基本です。しかし、誤ってキャンペーンIDやリードIDをキーにしてしまうと、異なるレコードが更新されたり、エラーになったりします。必ず「Id」フィールドをキーとして使用してください。また、複数のキャンペーンで同じリードがメンバーになっている場合、キャンペーンIDとリードIDの組み合わせでは一意にならないため、レコードIDが必要です。

リードと取引先責任者の区別を誤る

キャンペーンメンバーは、リードと取引先責任者の両方をメンバーとして持つことができます。CSVで更新する際、どちらのオブジェクトに属するのかを間違えると、存在しないIDでエラーになります。CSVには「LeadId」または「ContactId」のいずれかが入っていることを確認し、両方同時に値が入っていないかもチェックしてください。特にエクスポートしたデータを編集するときは注意が必要です。

大きなデータボリュームでタイムアウト

Data LoaderやWorkbenchで一度に5万件以上のレコードを更新しようとすると、タイムアウトやガバナ制限エラーが発生することがあります。その場合は、更新を複数のバッチに分割して実行するか、Bulk APIを使用してください。Data LoaderのBulk APIオプションを有効にすると、チャンク単位で自動分割してくれます。また、Apexバッチを使って夜間バッチ処理として実行する方法も有効です。

管理者に確認すべき設定と注意点

一括更新を実施する前に、Salesforceの管理者に以下の点を確認してください。

  • API使用量制限: 組織の1日あたりのAPI呼び出し上限を確認します。大量データを一括更新する場合、API制限に抵触する可能性があります。特にData LoaderのBulk APIは呼び出し回数を消費するため、計画的に実行する必要があります。
  • バッチサイズと同時実行制限: 管理者が設定できるバッチサイズの上限や、同時に実行できるジョブ数に制限があります。これを超えるとエラーになるため、管理者に適切な設定を依頼してください。
  • データエクスポートの権限: 更新前に現状のデータをエクスポートする場合、データエクスポート機能の権限が必要です。管理者が権限を付与していない場合は、事前に依頼しておきましょう。
  • 自動化プロセスの有無: キャンペーンメンバーの更新をトリガーとするワークフロー、プロセス、フロー、Apexトリガが存在するかどうかを確認します。それらが無効化できるか、またはテスト環境で影響を検証できるかを管理者と相談してください。

よくある質問

Q1. キャンペーンメンバーのステータスを一括で「Responded」に変更したい。どの方法が簡単ですか?

A. レコード数が1万件未満で、標準項目のみの更新であればData Import Wizardが最も簡単です。それ以上の件数やカスタム項目を含む場合はData Loaderを使用してください。いずれの場合も、更新前に必ずテスト環境で試すことをおすすめします。

Q2. 更新後に一部のレコードがエラーになりました。どうやって修正すればいいですか?

A. エラーログをCSVとして出力し、エラーの理由を確認します。よくある原因は、IDの誤り、権限不足、必須項目の欠落です。エラーレコードのみを再抽出して修正し、再度Data Loaderで更新を実行してください。

Q3. キャンペーンメンバーを一括で削除したいのですが、削除にも同じ注意点がありますか?

A. 削除の場合は、更新よりもさらに注意が必要です。特に、削除後にキャンペーンメンバーレコードは完全に消えるため、元に戻せません。また、削除時にも関連するトリガやフローが動作する可能性があります。必ず事前にデータのバックアップを取得し、テスト環境で検証してから実行してください。

まとめ

キャンペーンメンバーの一括更新は、Data Import WizardやData Loaderなど複数の方法で実現できますが、データの一意性や権限、自動化プロセスへの影響を事前に確認することが成功の鍵です。特に更新キーとしてレコードIDを使用し、大量データの場合はBulk APIの利用やバッチ分割を検討してください。また、作業前には必ず組織のバックアップを取り、テスト環境で検証してから本番環境に適用することをおすすめします。適切な方法を選び、注意点を守ることで、安全かつ効率的にキャンペーンメンバーを更新することができるでしょう。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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

ADVERTISEMENT