
Salesforceの運用で、こんな経験はありませんか?
「テキスト項目の先頭にインデント(字下げ)としてスペースを入れたのに、保存したら消えてしまった…」 「全角スペースなら大丈夫だと思ったのに、やっぱり消える!」
Salesforceのテキスト項目における先頭や末尾のスペースの扱いは、意外と知られていない仕様の一つです。多くの人が「半角は消えるけど、全角なら残るはず」と考えがちですが、実はそれが落とし穴だったりします。
この記事では、Salesforceのテキスト項目でスペースがどのように扱われるのか、その公式な仕様と理由、そして代替案について詳しく解説します。
結論:Salesforceでは先頭と末尾のスペースは保存できない
まず結論からお伝えします。
Salesforceのテキスト項目では、レコードを保存する際に、文字列の先頭と末尾にあるスペースが自動的に削除(トリミング)されます。そして最も重要な点は、この仕様が「半角スペース」と「全角スペース」の両方に適用されるということです。
入力した文字列 | 保存後のデータ |
テスト (先頭が半角スペース) | テスト |
テスト (先頭が全角スペース) | テスト |
テスト (末尾が半角スペース) | テスト |
テスト (末尾が全角スペース) | テスト |
なぜスペースは自動的に削除されるのか?
この挙動はバグではなく、Salesforceが意図して設計した仕様です。Salesforceの公式ヘルプ記事(記事番号: 000384432)にも明記されており、その主な理由は以下の通りです。
1. データのクレンジングと統一 ユーザーによる誤入力やコピー&ペーストによって意図せず挿入された不要なスペースを排除し、データベース内のデータの構造を統一するため。
2. 意図しないデータの防止 不要なスペースがデータベースに登録されることを防ぐため。
3. 並び替え処理への影響 Salesforce内の並び替え(ソート)処理では、作成者の意図に関わらず先頭や末尾のスペースは無視されるため、あらかじめ削除することでデータの整合性を保つため。
つまり、「 Salesforce
」と「Salesforce
」が別のデータとして扱われてしまうと、検索、レポート、自動化処理などで予期せぬ不整合を引き起こす可能性があります。これを防ぐために、一律でトリミング処理が行われるのです。
よくある誤解:「全角スペースなら保存できる」は間違い!
多くのWebアプリケーションやデータベースでは、半角スペースのみをトリミングの対象とし、全角スペースは通常の文字として扱うことが少なくありません。そのため、「Salesforceでも全角なら大丈夫だろう」という推測が広まりがちですが、これは明確に間違いです。
Salesforceはデータの厳密な一貫性を重視するため、文字種に関わらず「スペース」と見なされる文字を先頭と末尾から削除します。この点をしっかり押さえておきましょう。
どうしても先頭に空白を持たせたい場合の代替案
仕様は理解したけれど、業務要件でどうしてもインデントのような表現が必要な場合、どうすればよいのでしょうか。いくつか代替案をご紹介します。
1. 空白以外の記号を使用する
最もシンプルで確実な方法です。全角スペースの代わりに、見た目が似ている別の記号を先頭に付与します。
- 例:
■テスト
【】テスト
・テスト
これらは文字として扱われるため、削除されることはありません。運用ルールとして統一できるのであれば、最も手軽な方法です。
2. 数式項目や画面フローを活用する
レコードの詳細ページで表示する時だけインデントを付けたい、といった見た目上の要件であれば、数式項目が有効です。元のテキスト項目とは別に、表示用の数式項目を作成し、" " & 元のテキスト項目__c
のように全角スペースを連結して表示させることができます。
また、入力支援として画面フローを作成し、特定の条件下で自動的に先頭に記号を付与するといった制御も可能です。
3.(上級者向け)特殊な空白文字を利用する
これは特殊なケースですが、Apexなどを用いて「ノーブレークスペース (U+00A0)」のような、通常のスペースとは異なる特殊な空白文字を挿入する方法もあります。 ただし、この方法は検索や他のシステムとの連携時に文字化けや不整合を引き起こすリスクがあるため、十分なテストとリスク理解が求められます。基本的には推奨されません。
まとめ
今回は、Salesforceのテキスト項目におけるスペースの扱いについて解説しました。
- Salesforceでは、先頭と末尾のスペースは保存時に自動で削除される。
- この仕様は、半角スペースと全角スペースの両方に適用される。
- これはデータの整合性を保つための公式な仕様であり、バグではない。
- インデントなどが必要な場合は、スペースの代わりに記号を使うのが最も確実な代替案。
この仕様を知っておくだけで、「なぜかスペースが消える…」と悩む時間を節約できます。Salesforceのデータは常にクリーンな状態が保たれている、という思想の表れと理解しておきましょう。
文頭/文末にスペースを入力すると、保存時に削除される
- Salesforceでの空白文字の扱いに関して記載されています。
- リンク:Salesforceヘルプ:文頭/文末にスペースを入力すると、保存時に削除される