Salesforce IDとはなにか
Salesforce内のすべてのレコードには固有のIDが付与されています。このIDは全世界すべてのSalesforce組織で固有のIDとなっており、原則重複することはありません。また、その値が一度付与されると、レコードが削除されて復元された場合も含めて変わることはありません。
このIDですが、15文字と18文字の2種類のものが存在します。機能や外部連携の方法等によっては15文字のIDではうまく機能しないものがあり、よくこの違いが原因となりシステム上、または運用上対処しなければならない課題が発生することがあります。
それぞれのIDがどのように異なるのかを認識しておくことで、実際に設定を行う際にうまくいかない時の解決手段として役立ちます。
15文字と18文字のIDの違いについて
では実際にそのIDは15文字と18文字でどのように違うのでしょうか。以下でその違いを説明していきます。
SalesforceのIDにおけるそれぞれの違いは以下のようになっています。
ID15(15文字のID)の場合:大文字・小文字の区別があります。15 個の文字はそれぞれ数字 (0-9)、英小文字 (a-z)、英大文字 (A-Z) で構成されています。
(記載例:000000000000Abc)
ID18 (18文字のID)の場合:大文字・小文字の区別はありません。
(記載例:000000000000AbcDEF)
いずれも、同じレコードを指し示すIDとなりますが、最後の3文字の値が異なります。
また、大文字小文字の区別がされるか、されないかは把握しておいた方がよいポイントになります。
つまり、ID15においては、000000000000Abc は、000000000000aBC と同じではありません。基本的にSalesforceは18文字のIDの利用を推奨していますので、システム上の要件が特にないようであれば18文字のIDを利用するようにしましょう。
Salesforce IDの取得・確認方法について
では各レコードのIDはどのように確認すればよいでしょうか。IDは確認する方法がいくつかあります。その確認方法の例を以下にあげていきます。
・URLでの確認
SalesforceのレコードにWebブラウザでアクセスすると、ブラウザのアドレスバー上に表示されているURLの中にレコードのIDが含まれています。特定のレコードのIDのみを知りたい場合にはいちばん探しやすい方法になるでしょう。
・レポートでの確認
Salesforceレポートの項目としてレコードのIDを取得することができるので、レポートにて個々のレコードのIDを確認することができます。
・データローダを使ったエクスポートによる確認
データローダのエクスポートを使い、IDを取得することができます。レコードのIDを使った大量のデータを取り扱いたい場合は有効な手段と言えます。
・開発者コンソールを使った確認
開発者コンソール上でクエリを実行することでIDを取得することができます。
例えば、Salesforceのユーザの名前とIDを取得したい場合、開発者コンソール上で以下のクエリを実行すると取得することができます。
select id, name from User
上記、各レコードのIDの確認方法について説明いたしました。
その他、API を使用してレコードをクエリまたは検索する方法もあります。
詳細についてはSalesforceの公式ヘルプページを使い確認するようにしましょう。
15文字と18文字のIDの違いによる注意事項
前述の通り、Salesforceの機能によって、または連携先の外部システムの要件によって、15文字のIDでは正常動作せず、18文字のIDを指定しなければならない機能があります。実際の運用時には注意が必要ですので、詳細例を以下で確認していきます。
注意事項の詳細
例えばLightningコンポーネントやVisualforce開発において15文字のIDではうまく動作せずに18文字のIDでしか正常動作しないものがあったりします。開発時に正常にレコードの情報が取得できない等のトラブルがある場合、このID15/ID18の違いによる機能差異を考慮してみてください。
また、データローダでエクスポートする際には、レコードIDは18文字でエクスポートされるのに対して、レポートのエクスポート機能を使ってレコードIDをエクスポートする際は15文字でエクスポートされます。
これにより例えばSalesforceからデータエクスポート後、EXCEL上の関数を使ってレコードIDをキーにしたデータ同士の突合作業を行う際など、正常にデータ整理が行えないことがあるので特に注意が必要です。
さらには外部システムによっては大文字小文字の区別がつけられず、例えば前述の000000000000Abc と000000000000aBCを同一のレコードと認識してしまうといったケースもあり、Salesforceだけでなく外部システムでの要件も考慮に入れる必要があります。
15 文字の ID を 18 文字 のID へ変換する方法
このようにシステムによっては18文字のIDしか認識できないケースがあります。
レコードごとに正確にIDを把握する必要がある場合、どのように解決すれば良いでしょうか。
レコードごとに15文字、18文字の正しいIDを取得する場合は数式項目を使うと正しい値を取得することができます。詳細な作成方法は以下を参照してください。
Salesforce Classic の場合:
1. 「設定」>「カスタマイズ」>(オブジェクト名)>「項目」 へアクセスしてください。
– カスタムオブジェクトの場合: 「設定」>「作成」>「オブジェクト」>オブジェクト名を選択してください。
2. 「カスタム項目&リレーション」 関連リストで、「新規」 をクリックしてください。
3. 「数式」ラジオボタンをクリックしてください。
4. 「数式の戻り値のデータ型」 として、「テキスト」ラジオボタンをクリックしてください。
5. 数式エディタへ次の数式を入力してください。
CASESAFEID(Id)
※ID15の値を取得したい時には数式エディタにIdと入力することで、15文字のレコードIDを表示する数式項目を作成することができます。
6. 「項目レベルセキュリティの設定」 を行い、ページレイアウトへ(から)の追加/削除を行ってください。
7. 「保存」 をクリックしてください。
8. 保存後、レコードにアクセスするとレコードのページレイアウト上に、該当のIDが表示されることが確認できます。
Lightning Experience の場合:
1. 「設定」 > 「オブジェクトマネージャ」 > (オブジェクト名) > 「項目とリレーション」 を選択します。
2. 「新規」 をクリックしてください。
3. 「数式」 のラジオボタンをクリックしてください。
4. 「数式の戻り値のデータ型」 として、「テキスト」 ラジオボタンをクリックしてください。
5. 数式エディタへ次の数式を入力してください。
CASESAFEID(Id)
※ID15の値を取得したい時には数式エディタにIdと入力することで、15文字のレコードIDを表示する数式項目を作成することができます。
6. 「項目レベルセキュリティの設定」 を行い、ページレイアウトへ (から) の追加 / 削除を行ってください。
7. 「保存」 をクリックしてください。
8. 保存後、レコードにアクセスするとレコードのページレイアウト上に、該当のIDが表示されることが確認できます。
実際にシステム連携を取る際にこれら作成したカスタム項目を参照させるようにすることで、正しい値を参照することが可能になります。IDの文字数の問題で連携が正常に動作しない場合、このカスタム数式項目による解決を試してみてください。
Salesforce ID15/18文字の違いを正しく理解しましょう
いかがでしたでしょうか、今回はSalesforce IDについて説明をしていきました。Salesforceの各レコードにはグローバルでユニークなIDが付与されていること、ID15とID18と2種類あり、各用途によって利用方法や確認方法などが異なることがわかりました。
実際の開発や運用のシーンにおいてこうした違いを把握しておくことで、トラブルを未然に防ぐことができます。今回学んだことを生かして日々のSalesforce利用に役立てるようにしましょう。]]>