SalesforceのIDを15桁から18に変換する方法を見つけたのでご説明します。
- Salesforce管理者になってまだ慣れていない方
- Salesforceを導入したての運用者の方
- 関数に苦手意識のある方
今回は数式を使いますが、比較的分かりやすい数式ですし細かくご説明するので一緒に見ていきましょう!
結論、CASESAFEID(’15桁のID’) これだけです。
どんなときに使うのか?
まずはどんなときに15桁→18桁の変換をする必要があるのかを見ていきましょう。
SalesforceはどんなレコードでもIdという一意の値によって管理されています。
“一意”ってどういう意味?
一意とは特定のグループや組織の中で、何か1つの値によって対応するものが1つだけ決まるということです。学籍番号や社員番号なんかがイメージしやすいでしょうか?電話番号やメールアドレスなんかもそうですね。
090-xxxx-yyyy という電話番号の人がいっぱいいたら、誰にかかるか分からなくて
困っちゃうね
SalesforceのIDはURLを見るとわかるかも
さて、このIDですが、Salesforceのレコードやグループ、プロファイルなどなど、SalesforceのものはたいていIDをもっており、そのIDはURLを見ると分かるものが多いです。
例えばSalesforceの取引先レコードを一つ選んで、URLを確認してみましょう。
URLになにやら不思議な文字列がありますね。これがいま見ているレコードのIDです。つまり、私が使っているこのSalesforce組織で、このIDを持つのは「株式会社あおいとけい」の取引先レコードのみというわけです。
こんな感じで、画面で表示すればたいていのもののIDは取得できるのです!
そしてこのID、何に使うのかというとフローなどで使うことが多いと思います。
プロファイルのID、公開グループのID…これらが分かればフローでプロファイルや公開グループを使うときにとても便利なのです。
IDは環境によって違うから、Sandboxで作成したフローを本番環境でそのまま使うことはできないんだけど、リリース後に一度IDを設定してしまえば、その後の運用が楽だよね。
15桁のIDではうまく処理できないことも…
さて、このURLのID部分ですが、省略バージョンが書かれている場合があります。
例えば公開グループのID。試しにURLに書かれているIDを使ってフローで公開グループのレコードを取得しようとしたのですが、できませんでした。。。
原因は、本当の完全なIDは18桁なのにURLの方には15桁分しか記載がなかったから。レコードを取得するには18桁必要みたいなんです。
そう、この場面で「15桁のSalesforceIDを18桁にする」必要が出てくるんです。
関数 CASESAFEID() の使い方
使う場面はなんとなくイメージつかんでいただけたでしょうか?
では実際に関数の使い方を見ていきましょう。この関数は実にシンプルです。
CASESAFEID(’15桁のID’) これだけです。カッコ()の中にURLから取得した15桁のIDを’ ‘(シングルコーテーション)で囲んで入れたら完成です。
この関数の結果を何かの変数に保存すれば、18桁のIDが使用できます。
オブジェクトを指定したりする必要もなく、15桁のIDを設定するだけで18桁分の完全なSalesforceIDを手に入れることができます。
実際に使ってみました|フローでの使用例
というわけで、実際にこの関数を使ったフローを作ってみたので、どんな感じになるかご紹介です。参考にご覧くださいませ~。
まず、URLを確認します。
15桁分のIDしか取得できないようですね。
確認したところで、フローを見ていきます。今回は公開グループのレコードを取得したいと思います。
レコードを取得するときの条件としてIDを使っています。
このIDに設定しているフロー変数の中身はコチラです。
数式の中身でCASESAFEID()を使っていますね。
そしてこの数式項目の中身がこちら。フローのデバッグで確認したのでちょっと小さい文字になってしまいますが、18桁になっており、グループのレコードを取得できていることがお分かりいただけると思います。
こんな感じで、URLから完全なSalesforceIDが取得できない場合も、関数を使ってIDをゲットすることができます!
Idは組織ごとに異なるので、Sandboxで作成したフローをリリースしても、本番環境ではそのまま使えません。リリース後に、フロー変数にベタ書きしているSandboxの公開グループIDを本番環境の公開グループIDに変更してあげる必要があります。
ちょっと細かいお話|SOQL
SOQLだと15桁のID指定でリクエストしても18桁のIDが返却されてきますよ。
SELECT Id FROM Group WHERE Id = '00G5j0000011RBM' //15桁を指定
=> 00G5j0000011RBMEA2 //18桁が返ってくる
まとめ
今回はSalesforceで15桁のIDから18桁のIDを取得する方法を見ていきました。関連として一意であるということの意味やフローでの使用例も載せています。
関数や数式は一見取っつきにくいと感じたり、複雑なものだとニガテだと感じる方もいらっしゃるかも知れませんが、一つずつゆっくり見ていけば理解できると思います!一緒に頑張りましょう。
もし解説してほしいものがありましたら、ぜひ教えてください。きっと解説します!
それでは、ごきげんよう。
参考資料
コメント