1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

カスタムボタンで外部URLを呼ぶ時にIF関数を使う

Posted at

簡単だと思った質問です。

通常だと 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つ賢くなったな。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?