簡単だと思った質問です。
通常だと URLのところにハードコーディングすれば問題ない。
どうも https://が先頭にあれば、①そのまま外部URLに飛びます。
問題はここにある。https://がないと②今のURLの後ろにここで設定したURLを連結する仕様みたい。
(いろいろ試した結果でそう判断しています。)
以上のことを前提に考えてみます。
まず質問者さんは以下のように設定したそうです。
そうすると、②が発動。外部のサイトに飛びません
If(CONTAINS($Api.Enterprise_Server_URL_490, "--dev"), "devlogin.company.com/users/"+FederationIdentifier__c,
If(CONTAINS($Api.Enterprise_Server_URL_490, "--qa"), "qalogin.company.com/users/"+FederationIdentifier__c,
If(CONTAINS($Api.Enterprise_Server_URL_490, "--training"), "traininglogin.company.com/users/"+FederationIdentifier__c,
If(CONTAINS($Api.Enterprise_Server_URL_490, "--uat"), "uatlogin.company.com/users/"+FederationIdentifier__c,
"login.company.com/users/"+FederationIdentifier__c))))
そこで私は以下を提案。でもこれだとカスタムボタンの数式チェックはOKなのですが
Error: Function URLFOR may not be used in this type of formula
となって、保存できない。
If(CONTAINS($Api.Enterprise_Server_URL_490, "--dev"), "https://devlogin.company.com/users/"+FederationIdentifier__c,
If(CONTAINS($Api.Enterprise_Server_URL_490, "--qa"), "https://qalogin.company.com/users/"+FederationIdentifier__c,
If(CONTAINS($Api.Enterprise_Server_URL_490, "--training"), "https://traininglogin.company.com/users/"+FederationIdentifier__c,
If(CONTAINS($Api.Enterprise_Server_URL_490, "--uat"), "https://uatlogin.company.com/users/"+FederationIdentifier__c,
"https://login.company.com/users/"+FederationIdentifier__c))))
そこで、私はてっきりカスタムボタンの式のころにこれを書いていたと思っていたのですが、初めのうちは数式フィールドにこれを書いて
その数式フィールドのAPI名を指定していたようです。数式フィールド経由でなく直接書いたら、こんなエラーになりました。
そこでError: Function URLFOR may not be used in this type of formulaを回避するために
数式フィールド経由させますが、そのまま経由しても②の状態になるので、もしかしたらと思い
URLFORを使ってみると、なんとうまく行きました。
#結果
まず、数式フィールドを作ります。
external_url__c
If(CONTAINS($Api.Enterprise_Server_URL_490, "--dev"), "https://devlogin.company.com/users/"+FederationIdentifier__c,
If(CONTAINS($Api.Enterprise_Server_URL_490, "--qa"), "https://qalogin.company.com/users/"+FederationIdentifier__c,
If(CONTAINS($Api.Enterprise_Server_URL_490, "--training"), "https://traininglogin.company.com/users/"+FederationIdentifier__c,
If(CONTAINS($Api.Enterprise_Server_URL_490, "--uat"), "https://uatlogin.company.com/users/"+FederationIdentifier__c,
"https://login.company.com/users/"+FederationIdentifier__c))))
上記の数式フィールドをカスタムボタンで呼び出します。
{!URLFOR(your_object_api_name.external_url__c)}
2時間ほど悩みました... 何故かベストアンサーはもらえませんでしたがね。まぁ、1つ賢くなったな。