수식(Formula) 오류 해결: If, Concat 등 자주 틀리는 구문 교정
수식(Formula) 오류 해결: If, Concat 등 자주 틀리는 구문 교정
7편에서 대시보드 용량 최적화를 통해 쾌적한 속도를 확보했다면, 이제 데이터베이스의 기능을 완성할 차례입니다. 노션 데이터베이스를 쓰다 보면 "디데이(D-Day)를 자동으로 계산하고 싶다", "체크박스가 켜지면 '완료', 꺼지면 '대기'라고 글자를 띄우고 싶다" 같은 니즈가 생깁니다. 이때 사용하는 것이 바로 '수식(Formula)' 속성입니다.
하지만 수식 창에 코드를 입력하고 [완료]를 누르면, 기대했던 결과 대신 "⚠️ 구문 오류(Parsing error)"나 "유형이 일치하지 않습니다(Type mismatch)" 같은 빨간색 에러 메시지를 마주하며 좌절하는 분들이 정말 많습니다. 특히 노션 수식 기능이 2.0 버전으로 대대적으로 업데이트되면서 과거 인터넷에 올라온 옛날 수식을 그대로 복사해 붙여넣으면 100% 오류가 발생합니다.
이번 8편에서는 수식 입문자들이 가장 자주 마주하는 3대 오류 메시지의 원인을 분석하고, 실무에서 필수적으로 쓰이는 if, concat 등 핵심 구문의 올바른 교정법을 명쾌하게 정리해 드리겠습니다.
1. 노션 수식 창이 빨갛게 변하는 3대 원인과 교정법
① "유형이 일치하지 않습니다 (Type Mismatch)"
노션 수식에서 가장 높은 빈도로 발생하는 오류입니다. 원인은 '숫자' 데이터와 '텍스트(글자)' 데이터를 한곳에 섞어서 연산하려고 했기 때문입니다.
틀린 예시:
prop("나이") + "세"➡️ 나이(숫자)와 "세"(텍스트)는 더할 수 없습니다.올바른 교정: 노션 수식 2.0에서는 숫자를 텍스트로 변환해 주는
.format()함수를 뒤에 붙여야 합니다.JavaScript// 올바른 구문 prop("나이").format() + "세"
② "인수의 개수가 올바르지 않습니다"
함수가 실행되기 위해 필요한 재료(인수)의 개수를 채우지 못했거나, 너무 많이 넣었을 때 발생합니다. 주로 if 조건문을 쓸 때 괄호 위치를 잘못 닫아서 발생합니다.
틀린 예시:
if(prop("완료"), "성공")➡️ 만약 완료가 아니라면(거짓일 때) 어떻게 해야 하는지 대답을 안 적어주었습니다.올바른 교정:
if(조건, 참일 때 결과, 거짓일 때 결과)삼박자를 모두 채워야 합니다.JavaScript// 올바른 구문 if(prop("완료"), "🎯 성공", "⏳ 진행중")
③ "속성을 찾을 수 없습니다 (Property not found)"
수식 2.0으로 넘어가면서 가장 크게 바뀐 점입니다. 과거에는 속성을 불러올 때 prop("속성명") 형태를 썼지만, 지금은 수식 창 좌측에 있는 속성 목록에서 해당 속성을 마우스로 직접 클릭해야 합니다. 직접 타이핑하면 글자색이 변하지 않고 단순 텍스트로 인식되어 오류가 납니다.
2. 실무 활용도가 가장 높은 핵심 구문 해결 가이드
패턴 A: 문장을 매끄럽게 잇고 싶을 때 (concat 대신 + 연산자)
과거에는 여러 텍스트를 합치기 위해 concat(prop("A"), prop("B"))라는 복잡한 함수를 썼습니다. 하지만 이제는 훨씬 직관적인 + 기호로 텍스트 결합이 가능해졌습니다. 단, 앞서 말했듯 모든 속성이 '텍스트' 형태여야 합니다.
실무 적용 예시 (업무 요약 문장 만들기):
JavaScript// 프로젝트명과 담당자를 엮어 하나의 문장으로 자동 생성 prop("프로젝트명") + " (담당자: " + prop("담당자").name() + ")"
패턴 B: 다중 조건문 처리하기 (If 형식 교정)
조건이 2개 이상일 때(ex. 점수가 90점 이상이면 'A', 80점 이상이면 'B', 나머지는 'C') 옛날 노션 수식에서는 if 안에 if를 중첩하여 괄호를 수없이 닫아야 했습니다. 수식 2.0에서는 ifs 함수를 지원하여 가독성이 압도적으로 좋아졌습니다.
과거 방식 (복잡함):
if(조건1, 결과1, if(조건2, 결과2, 결과3))수식 2.0 방식 (깔끔함): 조건과 결과를 순서대로 나열하기만 하면 됩니다.
JavaScript// 업무 우선순위 자동 분류 수식 ifs( prop("긴급도") == "상" && prop("중요도") == "상", "🚨 최우선", prop("중요도") == "상", "⭐ 높음", "☕ 보통" )
3. 디데이(D-Day) 계산을 위한 마법의 치트키 구문
프리랜서 일정 관리나 직장인 프로젝트 관리에서 빼놓을 수 없는 '마감일 D-Day' 수식을 공유합니다. 이 구문을 복사해서 속성 이름만 변경해 사용해 보세요. 오늘 날짜(now())와 마감일 속성 간의 일수 차이를 계산해 줍니다.
/* 마감일 디데이 자동 계산 수식 */
let(
days, dateBetween(prop("마감일"), now(), "days"),
ifs(
prop("상태") == "완료", "✅ 완료",
days == 0, "🔥 오늘 마감!",
days > 0, "⏳ D-" + days.format(),
"❌ 기한 초과 (D+" + abs(days).format() + ")"
)
)
💡 잠깐! 상식 팁:
let함수는 복잡한 계산식을 변수(days)에 임시로 저장해 두고 아래 조건문에서 돌려쓰는 수식 2.0의 혁신적인 기능입니다. 덕분에 수식이 훨씬 짧고 명확해집니다.
핵심 요약
노션 수식에서 가장 자주 발생하는 'Type Mismatch' 에러는 문자와 숫자를 같이 더하려고 할 때 발생하며, 숫자에
.format()을 붙여 해결합니다.수식 2.0 버전부터는 괄호 지옥을 유발하던 복잡한 중첩
if문 대신, 조건을 나열하는ifs함수를 사용하여 다중 조건을 쉽게 처리할 수 있습니다.속성을 수식 창에 넣을 때는 직접 타이핑하는 대신, 반드시 좌측 메뉴에서 마우스로 클릭하여 객체 형태로 불러와야 오류가 없습니다.
다음 편 예고
다음 9편에서는 협업 시 발생할 수 있는 보안 사고를 막기 위한 [문제 해결] 공유 권한 설정 오류로 인한 정보 유출 방지 및 보안 체크리스트를 다루겠습니다. 전체 워크스페이스를 외부에 공유했다가 회사 기밀이나 개인 정보가 구글에 검색되는 참사를 막는 필수 보안 가이드입니다.
여러분의 경험은 어떠신가요?
노션 수식을 쓰면서 아무리 수정해도 풀리지 않던 에러 메시지가 있었나요? 구현하고 싶은 조건(ex. 특정 날짜 지나면 알림 띄우기 등)이 있다면 댓글로 수식 상태를 남겨주세요. 알파남이 직접 디버깅(코딩 교정)해 드리겠습니다!
댓글
댓글 쓰기