Mark Hammer's Blog

SalesforceやTrailheadに関する情報を投稿しているブログです。

キャンペーンメンバーの状況を新規作成時にカスタマイズ済みにしたい

はじめに

キャンペーンでは参加者をキャンペーンメンバーとして登録しますが、キャンペーンメンバーの「メンバーの状況」項目は、初期状態では「送信」と「レスポンスあり」で固定となっており、カスタマイズができません。
これは、通常選択リスト項目で選べる値は項目に設定している値及びレコードタイプ設定で決定しますが、キャンペーンメンバーの「メンバーの状況」項目はそのキャンペーンに紐づく「キャンペーンメンバーの状況」オブジェクト内のレコードで決定する動作が原因と思われます。
この動作により、通常選択リスト項目の値はレコードタイプ単位で決まるため「同じレコードタイプでレコード毎に別の値を使いたい」という要望は叶いませんが、キャンペーンの「メンバーの状況」に限り「レコード毎に別の値を使いたい」という要望が実現できます。
ただし、「初期値をカスタマイズしたい」という要望が実現不可となっており、IdeaExchangeでも「修正予定なし」となっています。

IdeaExchange: Customizable Campaign Member Status Values picklist

Update from Salesforce
(中略)
We don't plan to address this immediately on the roadmap, but we'll continue to re-evaluate our priorities to see if we can fit this in.

ということで、ここでは「初期値をカスタマイズしたい」という要望を何とかして実現してみます。

前提

ここではキャンペーン作成時に「メンバーの状況」項目が以下から選べるようになっているようにします。

  • 連絡予定:デフォルト
  • 連絡済み
  • 出席予定:レスポンスあり
  • 欠席予定:レスポンスあり

また、初期値の「送信」、「レスポンスあり」は不要なので削除します。

解決方法1

テンプレートとなるキャンペーンを作り、それをコピーする。

概要

  • テンプレートとなるキャンペーンを作成し、「メンバーの状況」をカスタマイズする。
  • UIから「新規」ボタンを外し、代わりに「テンプレートを『関連情報と共にコピー』するボタン」を配置する。

実装手順

  1. キャンペーンページレイアウトに「キャンペーンメンバーの状況」関連リストを表示する。
  2. テンプレートとなるキャンペーンを作成する。この時レコードIDをコピーする。
  3. テンプレートとなるキャンペーンの「キャンペーンメンバーの状況」関連リストで、前提節の通り状況の追加、削除を行う。
  4. キャンペーンにカスタムボタンを作成する。カスタムボタンのURLは以下とする。
    /lightning/r/Campaign/[テンプレートのレコードID]/clone?useRecordTypeCheck=0&cloneRelatedEntities=%7B%22CampaignMemberStatuses%22%3A%7B%7D%7D
  5. キャンペーンオブジェクト設定の「リストビューボタンレイアウト」から「リストビュー」にて標準ボタンから「新規」ボタンのチェックを外し、カスタムボタンにて4.で作成したカスタムボタンを選択する。
  6. 以後、5.で設置したカスタムボタンをクリックすることでテンプレートのコピー作成画面が表示され、「キャンペーンメンバーの状況」がテンプレートと同じレコードが作成される。

作業完了後はキャンペーンページレイアウトから「キャンペーンメンバーの状況」関連リストを外してもOKです。

メリット

  • 「メンバーの状況」を再カスタマイズしたい場合、テンプレートを編集すればいいのでフローより楽。

デメリット

  • 新規作成時、キャンペーン名にテンプレートとなるキャンペーン名が入るので、都度消して入力する手間が発生する。
  • 誤ってテンプレートキャンペーンを削除するとカスタムボタン押下時にエラーになる。
  • データローダでのキャンペーンインポート時には「メンバーの状況」がカスタマイズされない。
  • Sandboxを作成した場合、Sandboxへのキャンペーンテンプレート作成及びカスタムボタンURLの変更を行わないとキャンペーンが作成できない。

解決方法2

フローでキャンペーン作成時にキャンペーンメンバーの状況オブジェクトに手を加える。

概要

  • フローでキャンペーン作成時に「キャンペーンメンバーの状況」オブジェクトのレコードを作成、削除する。

実装手順

別サイトに手順を記載しましたのでご参考ください。

zenn.dev

メリット

  • 「新規」ボタンのカスタムボタン差し替えなど、UIへの変更が不要。
  • テンプレート不要のため、誤削除を気にする必要がない。
  • データローダでのキャンペーンインポート時にも「メンバーの状況」がカスタマイズされる。
  • Sandbox作成時も特に対応せず状況カスタマイズ済みのキャンペーンが作成される。

デメリット

  • 「メンバーの状況」を再カスタマイズしたい場合の修正箇所を理解するには、フローの設計思想を理解する必要がある。

おわりに

現状、「メンバーの状況」の初期状態を書き換えたいという要望を実現するのが結構面倒だという印象を受けました。
冒頭に書いた通りIdeaExchangeでもこの動作を修正する予定はないとのことですが、もう少し何とかならないか…と思います。

参考資料

sf.forum.circlace.com

www.youtube.com