ブログ

SalesforceのレコードIDの15桁と18桁の違いと、数式のカスタム項目によるコンバート

レコードIDの15桁と18桁の違いと、数式のカスタム項目によるコンバート

SalesforceのレコードIDには15桁と18桁が存在しています。
本記事では15桁IDと18桁IDの違いや、15桁IDと18桁IDのコンバート方法について解説します。

SalesforceのIDには15桁と18桁が存在する

SalesforceにはすべてのレコードにIDが付与されています。
実はこのレコードIDには15桁のものと18桁のものが存在します。

それぞれの違いは下記となります。
15桁ID:大文字・小文字の区別あり
(例:0017F00000okECd)
18桁ID:大文字・小文字の区別なし
(例:0017F00000okECdQAM)

どちらのIDも同一のレコードを指し示すものになります。
しかし、両方のIDが利用可能な状態ならではの困ったことがあります。

Salesforceの機能によっては15桁IDではうまく動作せず、18桁IDでしか正常動作しないものが稀にあるのです。

例えば、Lightningコンポーネントのlightning:inputにて、主従関係や参照関係のinputのvalueにIDをセットすると自動的にルックアップして値が反映されますが、これが15桁では動作せずに18桁で正常動作するというトリッキーな仕様になっています。

Salesforceの仕様はどんどん変わっていくのでそのうち修正されるかもしれませんが、15桁IDと18桁IDのどちらも常に使える状態だと開発や検証の際に安心です。

カスタム項目による2パターンの表示

今回は、数式のカスタム項目による15桁ID表示と18桁IDの表示の2パターンを実現します。

ノンコーディングで実現

ノンコーディングで簡単に実現します。
利用するのは数式項目の関数のみです。

取引先でサンプルを作成

今回は取引先でサンプルを作成していきます。

まずは15桁IDを表示するカスタム項目を作成します。
「項目とリレーション」から「新規」で新たな項目の作成に入ります。

データ型にて「数式」を選択して「次へ」

「項目の表示ラベル」と「項目名」については、今回は『Id15』としました。
「データ型」は『テキスト』を選択して「次へ」

数式は単純に、
[Id]
となります。

もちろん手打ちでも問題ありませんが、あえて「項目の挿入」を使う場合は、
取引先 > 取引先 ID で、「挿入」となります。
数式が入力できたら「次へ」

項目レベルセキュリティを適切に設定して「次へ」

ページレイアウトへの追加も適切に設定して「保存」
※あえて表示する必要はないケースがほとんどかと思いますが、今回はテスト表示のためにページレイアウトに追加しました。

次に18桁IDを表示するカスタム項目を作成します。
数式までは15桁IDと同じなので省きます。
数式には、
[CASESAFEID(Id)]
と入力します。
関数の「CASESAFEID(id)」は、15IDを18IDに変換します。

その後も同様に保存まで進みます。

15桁ID表示用のカスタム項目と18桁ID表示用のカスタム項目ができました。

取引先のレコードでテスト

取引先の適当なレコードを表示してみます。
無事に15桁IDと18桁IDが表示されています。

今回のまとめ

SalesforceのレコードIDが15桁と18桁が混在する特殊な仕様ならではのTipsかもしれませんが、意外と利用するシーンは多いのではないでしょうか。
思ったように動作せずにハマった場合は、ID関係を疑ってみるのも解決法のひとつかもしれません。

ApexやVisualforce、Lightningコンポーネントのコーディングの際に、必要に応じてID変換のコードを書いても良いのですが、毎度書くのも面倒ですし数式項目で用意しておけば使い回しも効いて利用も簡単です。

PAGE TOP