
Salesforceでは多くの標準オブジェクトに「Name」項目が存在します。例えば、取引先(Account)では「取引先名」、商談(Opportunity)では「商談名」が必須項目として設定されています。
また、Name項目を自動採番として自動的に命名する設定も存在します。
しかし、このName項目を自動採番だけで柔軟に制御することは難しいという制約があります。本記事では、その制限を回避しつつ、フローを用いてName項目を自動作成する方法を解説します。
自動採番の限界
Salesforceの標準機能として「自動採番」項目を利用することは可能ですが、以下のような制約があります。
- 他の項目の値を組み合わせて動的に生成することはできない
- 定義した採番ルールに従ってシーケンスが付与されるのみ
つまり「取引先名+日付+枝番」のような柔軟なネーミングをしたい場合には、自動採番では対応できません。
フローを使った実装案A:高速項目更新フローで自動生成
最もシンプルでパフォーマンスが高い方法は、高速項目更新(Before Saveトリガーフロー)を用いた実装です。
実装手順
- 対象オブジェクト(例:商談)に対してレコードトリガーフローを作成
- レコードが作成されるときをトリガーに設定
- 「取引先名」と「作成日」などを組み合わせたテキストを変数に作成
- 例)
{!$Record.Account.Name} + "-" + TEXT({!$Record.CreatedDate})
- 例)
- その値をName項目に代入
メリット
- 高速項目更新のためパフォーマンスが高い
- ユーザーの入力負担を減らせる
- 一貫した命名規則をシステムで強制できる
フローを使った実装案B:動的フォーム+ダミー項目を活用
場合によっては、ユーザーに任意の名前を入力してもらいたいケースもあります。その場合でも、動的フォームとダミー項目を組み合わせることで柔軟な設計が可能です。
実装手順
- 対象オブジェクトに「Name(入力用)」というカスタムテキスト項目を追加
- 動的フォームを利用し、ページレイアウトから標準の「Name」を非表示にする
- ClassicページレイアウトではNameをレイアウト上から消すことはできないが動的フォームであれば必須のNameをレイアウトから消すことができる
- ClassicページレイアウトではNameをレイアウト上から消すことはできないが動的フォームであれば必須のNameをレイアウトから消すことができる
- ユーザーには「Name(入力用)」だけを表示
- 動的フォーム上にて外したNameの代わりにName(入力用)を表示する
- 動的フォーム上にて外したNameの代わりにName(入力用)を表示する
- フローにて以下の処理を実装
- 「Name(入力用)」が入力されている場合 → その値で標準のNameを上書き
- 入力がない場合 → 「取引先名+作成日」などのルールで自動生成
- データの保存前に必須項目を上記ロジックで埋める必要があるため高速項目更新トリガーフローで自動化を作成する
メリット
- 標準のName必須制御を回避できる
- ユーザーが自由入力も可能
- 命名規則の自動生成とユーザー入力を両立できる
まとめ
Salesforceの「Name」項目は必須かつ柔軟性が低いため、実装に工夫が必要です。
- 完全自動化したい場合 → 高速項目更新トリガーフローで生成
- 一部ユーザー入力も許容したい場合 → 動的フォーム+ダミー項目方式
これらの方法を活用することで、ビジネスルールに沿ったわかりやすい命名規則を実現でき、運用効率も大幅に向上します。