数式の整理

[Answersで回答する時に使う情報のまとめに戻る](https://qiita.com/Keiji_otsubo/items/9e6e0e946826133eddc7)

Answersで多い質問のひとつに数式があります。数式は使う場所で微妙に制約が変わってきます。
そこを整理しておきます。（回答する時に忘れてしまいます。考える暇はありません、回答上位者はみんな数式の回答が早い。秒殺です。）
内容が重複していたていましたので、整理しています 2022/09/28

# Validation Rule Formulas only use ID-15, not the full ID-18
日本語環境でなんだっけ、面倒なのでこのままでいいや。

Validation RuleでIdを使う場合は15桁とのこと。
まぁ、そもそもIdをべた書きするなってことみたいです。

[Help with Validation Rule](https://trailblazers.salesforce.com/answers?id=9064S000000DuGZQA0)

しかし、PBでは18桁のようです。
ユーザーは、15文字のIDではなく18文字のIDを使用する必要があります。

[Process does not trigger when filter uses an 'ID' field](https://help.salesforce.com/articleView?id=000338322&mode=1&type=1)

[Convert a 15-character Id to an 18-character Id](https://help.salesforce.com/s/articleView?id=000324394&type=1)

**整理してみました**
|Idの桁数|[Formula help using record type id](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000EnNna)|
|:------------------------------------------------------|:-------------------------------------------|
|Formula Fields: |ID-15|
|Validation Rules: |ID-15|
|Workflow Rules: |ID-15|
|Approval Processes:| ID-15|
|Process Builder: |ID-18 |
|Flow Builder:| ID-18 フローでIdをセットすると18桁、数式では15桁なので変換が必要 CASESAFEID|
|Row-Level Report Formulas: |???  |
|[Web to Lead](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000G5AS3SAN)|ID-15|

[数式フィールドでコロン「：」はどういう意味ですか？](https://salesforce.stackexchange.com/questions/344851/what-does-a-colon-mean-in-a-formula-field)

# 複雑なIF条件式は見直すことが可能です。

I assume this is just for a formula checkbox field? There's really no point in specifying the false conditions, just look for when it's true, and the rest will be false:

偽の条件を指定しても意味がありません。真の場合を探すだけで、残りは偽になります。

確かにその通り。


[Receiving Compile Error on formula - must be some way to condense this?](https://trailblazers.salesforce.com/answers?id=9064S000000DlN9QAK)

# IFとCASEの合わせ技
ORを簡単に書ける技みたいですね。最初からは思いつかん。

```
IF(CASE(Owner.UserRole.Name, "Renewal Manager",1,"Customer Success",1,"Director, Sales Operations",1,0)=1,Owner.UserRole.Name,NULL)
```

# バリデーションルールでは値を変更できません。

まぁあたりまえなんですが、案外質問されます。

[Validation rule based on User Title](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000C6Vle)


この回答は使えます。

The problem is that when you create a record, you cannot assign an owner (at least not in standard record pages). 
問題は、レコードを作成するときに、所有者を割り当てることができないことです（少なくとも標準のレコードページでは）




# 選択リストが選択されているかのチェック

```
ISBLANK(TEXT( 選択リストフィールド ))
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/97e34b96-3c4f-c77d-bafa-e57f2be2c8b3.png)

# 数式の時のダブルコーテーション

何故か最近ちょくちょくあります。

見た感じあっているんだけど、エラーになる。
ああ、ダブルコーテションが違う。

```
CASE ([Account].D_Pre_Exception__c,
“Q – 3 Days”, Today()+3, 
“Q – 1 Week”, Today()+7,
“Q – 2 Weeks”,Today()+14,
“Q – 3 Weeks”, Today()+21,
NULL)
```

どうもMS Wordのコピペはだめらしい。

[Hi All,](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000BqRV2SAN)

# その他

+ 数式 がデータベースに値を格納することはありません -値は常に読み取り時に計算されます。これは、数式フィールドを編集できない可能性があることを意味します。[Edit formula filed](https://trailblazers.salesforce.com/answers?id=9064S000000Dq88QAC)
+ 数式ではデータベースに値を保存できないよ。
+ Formula field will not be able to search for the same value of a field unless the two records have parent-child relationship.2つのレコードに親子関係がない限り、数式フィールドはフィールドの同じ値を検索できません。
+ [テキストフィールドから現在実行中のユーザー数式を作成する方法](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000Bso0d)
+ **$の扱い。**the $ symbol refers to the logged in user, so when you have $Profile.Name, you are referring to the logged in user's profile (if their profile is not CTXS Data Admin, or not, etc...As for $RecordType.Name, it's obsolete, it works just as well without the $ signレコードタイプの$は廃止されて、つけてもつけなくても同じらしい。
+ [What is the use of $ symbol, especially in validation formula's please explain with example?](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000Bs3exSAB)
+ 数式フィールドでブランクの時にはゼロでなくてブランク表示にする 数式フィールドの設定と　関数で条件にマッチしなかった時に0でなくNullを設定する
+ [need to calculate tax based on tax method selected](https://trailblazers.salesforce.com/answers?id=9064S000000kJ2g)
+ [オーディエンスフォーミュラ](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000IRjb0)
+ [URL Button - If condition with URLFOR](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000HEgbc)