Salesforceでは多くの標準オブジェクトに「Name」項目が存在します。例えば、取引先(Account)では「取引先名」、商談(Opportunity)では「商談名」が必須項目として設定されています。

また、Name項目を自動採番として自動的に命名する設定も存在します。

そして、『商談名などのName項目を、ユーザーに入力させずに自動でルール通りに採番したい』という要望は現場でよくあります。

しかし、標準の自動採番機能では『取引先名+日付』のような柔軟な形式に対応できません。

つまり、このName項目を自動採番だけで柔軟に制御することは難しいという制約があります。本記事では、その制限を回避しつつ、フローを用いてName項目を自動作成する方法を解説します。

自動採番の限界

実は、Salesforceの標準機能として「自動採番」項目を利用することは可能ですが、以下のような制約があります。

  • 他の項目の値を組み合わせて動的に生成することはできない
  • 定義した採番ルールに従ってシーケンスが付与されるのみ

つまり「取引先名+日付+枝番」のような柔軟なネーミングをしたい場合には、自動採番では対応できません。

フローを使った実装案A:高速項目更新フローで自動生成

最もシンプルでパフォーマンスが高い方法は、高速項目更新(Before Saveトリガーフロー)を用いた実装です。

実装手順
  1. 対象オブジェクト(例:商談)に対してレコードトリガーフローを作成
  2. レコードが作成されるときをトリガーに設定
  3. 「取引先名」と「作成日」などを組み合わせたテキストを変数に作成
    • 例){!$Record.Account.Name} + "-" + TEXT({!$Record.CreatedDate})
  4. その値をName項目に代入
メリット
  • 高速項目更新のためパフォーマンスが高い
  • ユーザーの入力負担を減らせる
  • 一貫した命名規則をシステムで強制できる

フローを使った実装案B:動的フォーム+ダミー項目を活用

場合によっては、ユーザーに任意の名前を入力してもらいたいケースもあります。その場合でも、動的フォームとダミー項目を組み合わせることで柔軟な設計が可能です。

以下では、具体的な実装手順と実装方法をスクリーンショット付きで紹介します!

実装手順
  1. 対象オブジェクトに「Name(入力用)」というカスタムテキスト項目を追加
  2. 動的フォームを利用し、ページレイアウトから標準の「Name」を非表示にする
    • ClassicページレイアウトではNameをレイアウト上から消すことはできないが動的フォームであれば必須のNameをレイアウトから消すことができる
  3. ユーザーには「Name(入力用)」だけを表示
    • 動的フォーム上にて外したNameの代わりにName(入力用)を表示する
  4. フローにて以下の処理を実装
    • 「Name(入力用)」が入力されている場合 → その値で標準のNameを上書き
    • 入力がない場合 → 「取引先名+作成日」などのルールで自動生成
    • データの保存前に必須項目を上記ロジックで埋める必要があるため高速項目更新トリガーフローで自動化を作成する
動的フォームの設定詳細(Lightningレコードページの設定)
動的フォームへアップデートする設定方法
  • まずは、画像のようにLightningページを動的にアップデートします。
    • 環境によってはもともと有効な場合もあります。
入力用の項目を配置し既存の商談名を削除するLightningページでの設定方法
  • 次に、既存の商談名をレイアウトから外し、新たなNameを配置します。
    • 保存時に必須項目がページにない旨のエラーが出ますが、以下のフローにて自動入力されるので無視します。
レコードトリガーフローの詳細
Name自動作成フローのトリガ条件設定
  • まずは、画像の通りに開始条件を「作成または更新」で選択し、以下の数式を入力します。
    • トリガ条件(Name(入力用)をName_input__cとした場合サンプルコードです)
OR( ISNEW(), ISCHANGED({!$Record.Name_input__c}))
Name自動作成フローのプロセス定義
  • 次に、リソースにテキスト数式を作成し、画像のように更新コンポーネントを設定します。
    • リソースの数式(テキスト型で作成しているformula_Name)
IF(ISBLANK({!$Record.Name_input__c}), {!$Record.Account.Name} & TEXT(TODAY()),{!$Record.Name_input__c})
今回の実装によるメリット
  • 標準のName必須制御を回避できる
  • ユーザーが自由入力も可能
  • 命名規則の自動生成とユーザー入力を両立できる

まとめ

Salesforceの「Name」項目は必須かつ柔軟性が低いため、実装に工夫が必要です。

  • 完全自動化したい場合 → 高速項目更新トリガーフローで生成
  • 一部ユーザー入力も許容したい場合 → 動的フォーム+ダミー項目方式

これらの方法を活用することで、ビジネスルールに沿ったわかりやすい命名規則を実現でき、運用効率も大幅に向上します。

投稿者 てきとうSE

普段はシステムエンジニアとして、SalesforceなどのSaaS製品と日々向き合っています。

コメントを残す

名前は任意です。未入力の場合は「匿名」として投稿されます。