[Salesforce] Formula Fields

IamMilo·2024년 4월 27일

Formula Fields(수식 필드)

  • Salesforce Formula Field is a read-only field that derives its value from a
    formula expression you define.
    • Formula Field는 읽기전용 필드로, 직접 정의한 Formula에 의해 값을 정할 수 있는 필드입니다.
  • The formula field is updated when any of the source fields change.
    • source로 사용하는 값이 바뀌면 해당 source를 사용하는 필드의 값도 바뀝니다.
  • Sometimes we need to change the value based on the other source field value
    then we need a formula field.
    • 다른 필드의 값에 의존해서 값을 변경해야 할 경우 수식필드를 사용합니다.

Formula Fields 생성하기

기존에 생성해놓은 Position과 Candidate Object에서 아래의 요구사항을 만족하는 수식필드들을 생성해보겠습니다.

  • Calculate Number of Days, position is opened for.
  • Show a Green Checkbox if the status of the Position is New and Show red
    image if the status of the position is Closed.
  • Show the Candidate Full Name (First Name Last Name)
  • Ask the user to enter his twitter Handle and then create a field to show a
    Dynamic link to his twitter handle.

Calculate Number of Days, position is opened for.

특정 포지션이 열린 날짜부터 오늘까지의 일수 차이를 계산해서 얼마나 오래 모집중인지를 나타내는 수식 필드를 생성해보겠습니다.

Object Manager에서 새로운 필드를 생성할때 데이터 타입에서 Formula 선택합니다.

Formula를 통해 반환할 값의 Return Type 선택해줍니다. Date 끼리의 연산은 숫자를 반환하기 때문에 Number를 선택하고, 소수점 이하는 0으로 설정했습니다.

Validation때와 유사한 UI로 수식을 입력 가능합니다.
Blank Field Handling에서 수식에 대한 결과가 0일 경우 0으로 표시할지 빈칸으로 표시할지 설정할 수 있습니다.

일반적인 커스텀 필드와 마찬가지로 프로파일 별로 Visibility를 설정할 수 있으며 Formula Field는 Read-Only필드이기 때문에 자동으로 Read-Only가 체크되어 있습니다.


수식을 저장하고 레코드를 확인해 보았는데, 버그인지 뭔가 설정을 잘못한 것인지 모르겠으나 정상적으로 노출이 되지 않는 것을 확인했습니다. 여러가지 값을 변경하면서 테스트해보니 반환값을 TEXT로 바꾸고 수식을 TEXT(TODAY() - Open_Date__c)로 변경하니 정상노출되는 것을 확인했습니다.

정확한 원인을 아직 알 수 없으나 Date끼리의 연산은 제대로 이루어지나 해당 값을 Page에 렌더링 하는 과정에 문제가 있는 걸로 예상됩니다.

Show a Green Checkbox if the status of the Position is New and Show red image if the status of the position is Closed.

Picklist 타입인 필드의 값에 따라 정적인 이미지를 보여주는 수식필드를 생성해보겠습니다.

Quick Find에서 Static Resources를 검색해서 정적 이미지를 등록할 수 있습니다.


New 버튼을 눌러 2가지 이미지를 등록했습니다.


정적 이미지를 반환하기 위해서는 반환 타입을 TEXT로 하고 Formula에서 IMAGE() 펑션을 사용할 수 있습니다.

CASE(TEXT(Status__c),
'New position', IMAGE("/resource/GreenCheck", "GreenCheck",28,24),
'Closed - Filled', IMAGE("/resource/RedCheck", "RedCheck",28,24),
'Closed - Not Approved', IMAGE("/resource/RedCheck", "RedCheck",28,24),
'Closed - Canceled', IMAGE("/resource/RedCheck", "RedCheck",28,24),
"No Image Available"
)

위와 같이 CASE문의 표현식에 Status 칼럼의 값을 텍스트로 반환하고 그 텍스트의 경우에 따라 IMAGE 함수를 통해 원하는 이미지를 노출하도록 했습니다. 정적 리소스의 url은 "/resource/~" 하위로 지정할 수 있습니다.



레코드를 조회해보면 Status 값에 따라 이미지를 정상적으로 표시하는 걸 볼 수 있습니다.

Show the Candidate Full Name (First Name + Last Name)

Candidate Object에서 성과 이름을 합쳐서 Full Name을 만드는 수식 필드를 만들어 보겠습니다.

Object Manager에서 새로운 Formula 필드를 선택하고 반환타입을 TEXT로 지정해 줬습니다. 수식은 아주 간단히 아래와 같이 입력했습니다.

First_Name__c + ' ' +  Last_Name__c`


레코드를 조회해보면 텍스트를 합쳐서 잘 표기하는 걸 볼 수 있습니다.

Create a field to show a Dynamic link to his twitter handle.

HYPERLINK 함수를 사용하면 원하는 url을 하이퍼링크로 제공할 수 있습니다. URL을 문자열 연산을 통해 동적으로 링크를 생성할 수 있습니다.

아래와 같이 사용자에게 트위터 핸들을 입력받는 필드의 텍스트를 트위터 url 뒤에 이어붙여 동적으로 링크수식을 입력해서 수식 필드를 새로 생성했습니다.

HYPERLINK("https://twitter.com/" + Your_Twitter_Handle__c, 
 IMAGE("/resource/TwitterLogo", "Connect With Me", 28, 30))

HYPERLINK함수의 인자들은 (url, friendly_name [, target]) 3가지 입니다. 링크 텍스트역할을 하는 friendly name에 IMAGE 함수를 사용하면 텍스트가 아닌 정적인 이미지에 링크를 할 수 있습니다.


레코드를 조회해보면 정적인 이미지에 링크가 삽입되었고 클릭시 정상 연결되는걸 확인할 수 있습니다.

⚠️주의사항

  • 공식문서에 따르면Fourmula Syntax 자체의 길이는 3,900자로 제한이 있다고 합니다. 따라서 해당 제한을 넘어갈 경우 수식을 분리하거나 줄일 필요가 있습니다.
  • You can’t use long text area, encrypted, or Description fields in formulas.
  • The value of a field can’t depend on another formula that references it.
  • You can’t delete fields referenced in formulas. Remove the field from the formula before deleting it.
profile
100번 고민보다 1번 실행

0개의 댓글