【Salesforce】どの環境でも変わらないレコードURLが作成できるメモ
こんなときありませんか?
Lightningフローなどで、レコードIDを取得してそれをURLとして表示する…そんな機能を作ったことはありませんか?
そのとき、もしSandbox環境で開発していると、本番環境とはレコードIDやURLが異なるため、変更セットを使用しても作り直しになってしまう…。こんなときありませんか?
いつもこんな風につくっていました
Lightningフローなどで、レコードIDを取得してそれをURLとして表示する場合、いつも以下の通りにつくっていました。
HYPERLINK(“https://組織ドメイン/環境/「レコードID」/view"~)
でもこれだと、本番環境とSandbox環境では、環境の部分が異なります。
本番環境は「lightning.force.com」、Sandbox環境は「sandbox.lightning.force.com」になります。
また、レコードIDもカスタムオブジェクトだと環境間で異なる場合があります。
これでつくってしまうと、変更セットでフローなどを送っても、ここのリンクの部分だけ修正をしないといけなくなってしまいます。
どの環境でも関係なく表示できる方法
なんと、以下のような記述を行うと、その環境に適応したレコードURLにしてくれました!
LEFT({!$Api.Partner_Server_URL_数字},FIND("/services/Soap/",{!$Api.Partner_Server_URL_数字})) & 「レコードID」
以下のような構成です。
{!$Api.Partner_Server_URL_数字}
フローで「$Api」を選択すると、最後尾に数字のついたものがたくさん出てきます。
数字はAPIのバージョンをさします。
APIの廃止ニュースで該当のバージョンがあった場合はメンテナンスが必要になりそうです。
FIND("/services/Soap/",{!$Api.Partner_Server_URL_◯◯}
{!$Api.Partner_Server_URL_数字}内に、不要な文字列があるため除いています。
「レコードID」
レコードIDを持つ変数を指定します。
まとめ
Excelの感覚でハイパーリンクでレコードIDを変数にしてつくれば!と思ってずっと行ってきましたが、最近変更セットでSandbox環境から本番環境へ移行することが多くなってきてぶつかった問題でした。
こんな便利なやり方があるとは!今までつくってきたものすべてに適用したいくらいです。。
今後は自分が今まで行ってきたものの中で、もっといいやり方があるかも?と新たな目線を持ちつつ作業できたらと感じています。
便利なのでまだ使ったことのない方はぜひお試しください!