🛠️ 수월한 도구 사용 가이드/노션 가이드

노션 수식 정리의 기술: let, lets 함수로 복잡한 조건문 3줄 요약하기

수월한 2025. 3. 31. 00:06
728x90

노션 let, lets 함수 썸네일 이미지

 

안녕하세요, 워크플로우 아키텍트, 수월한입니다.👋

 

노션을 사용하다 보면 처음에는 간단했던 수식이, 조건이 하나둘 추가될수록 걷잡을 수 없이 길어지는 경우가 있어요. 그러다 나중에는 괄호가 어디서 열리고 닫히는지조차 헷갈려서 도저히 손 쓸 엄두조차 못 내게 되죠.

 

"똑같은 계산식을 매번 반복해서 적어야 하나?" "복잡한 if 조건문을 좀 더 깔끔하게 정리할 순 없을까?"

 

이런 고민을 하고 계신다면, 오늘 소개해 드릴 `let()`과 `lets()` 함수가 완벽한 해결책이 될 거예요. 여러분의 10줄짜리 수식을 단 3줄로 줄여주는 마법 같은 최적화 방법을 지금 바로 공개합니다.✨

🧠 노션 let / lets 함수란 무엇인가요?

`let()`과 `lets()` 함수는 프로그래밍의 '변수' 개념을 노션 수식에 도입한 기능이에요. 쉽게 말해, 길고 복잡한 수식이나 특정 값에 '별명(이름)'을 붙여주는 것이랍니다. 한 번 별명을 지어두면, 그다음부터는 긴 수식을 다시 쓰는 대신 '별명'만 부르면 되기 때문에 수식이 획기적으로 짧아져요.

 

1. `let()` 함수

  • 특징: 단 하나의 변수를 선언할 때 사용합니다.
  • 구조: `let(변수명, 변수값, 계산식)` (하나의 변수를 선언하여 계산)
// 예시 (결과 = 5)
let(
  x, 3,
  x + 2
)

 

2. `lets()` 함수

  • 특징: 여러 개의 변수를 동시에 선언할 때 사용합니다. (저는 실무에서 이걸 훨씬 많이 씁니다!)
  • 구조: `lets(변수1, 값1, 변수2, 값2, ..., 계산식)`
// 예시 (결과: 6)
lets(
  x, 3,
  y, 2,
  x * y
)

🌱기본 사용법: let 함수 (변수 1개)

가장 기본적인 `let()` 함수를 먼저 볼게요. `let()`을 이용하여 반복되는 계산식을 하나의 변수로 묶는 과정입니다.

😐Before: let 함수 사용 전

학생들의 점수를 계산하는 상황을 가정해 봅시다. 과제 점수(30%)와 참여도(70%)를 합산하고, 그 합계가 80점이 넘으면 가산점 10점을 주는 수식입니다.

/* 합계 점수 계산 */
round(prop("과제 점수") * 0.3 + prop("참여도") * 0.7) 
+ 
/* 80점 넘으면 가산점 부여 */
if(round(prop("과제 점수") * 0.3 + prop("참여도") * 0.7) > 80, 10, 0)

 

문제점

`prop("과제 점수") * 0.3 + prop("참여도") * 0.7`이라는 긴 수식이 두 번이나 반복되고 있습니다. 만약 과제 점수 반영 비율을 30%에서 40%로 고쳐야 한다면? 두 군데를 모두 찾아 고쳐야 하는 비효율이 생기죠.

😄 After: let 함수 적용 후

let(
  /* score라는 이름으로 합계 수식을 정의 */
  score, round(prop("과제 점수") * 0.3 + prop("참여도") * 0.7),
  
  /* 이제 score라는 단어만 쓰면 됩니다 */
  score + if(score > 80, 10, 0)
)

 

개선된 점

반복되던 긴 계산식을 score라는 변수에 담았습니다. 이제 계산식이 한눈에 들어오고, 나중에 비율을 수정할 때도 score 부분만 고치면 전체가 자동으로 적용됩니다.

주의! 변수명 작성 규칙

1. 변수명에는 띄어쓰기를 사용할 수 없어요. (예: my score (X) → myScore (O))

2. 변수명은 숫자로 시작할 수 없어요.

3. 변수명은 의미 있는 영단어 조합을 사용해야 나중에 알아보기 좋아요

🚀 실전 활용: lets 함수 (변수 2개 이상)

실제 노션 활용에서는 조건이 하나인 경우보다 여러 개인 경우가 더 많죠. 이때는 `lets()` 함수가 빛을 발합니다! 저는 수식이 정말 간단하지 않은 한, 항상 `lets()`를 사용하여 각 값/수식/조건을 변수로 선언해 두고 사용한답니다.

😐 Before: 복잡하게 얽힌 조건문

제목이 길거나(10자 이상), 태그에 'SEO'가 있거나, 완료된 항목에 대해 각각 다른 점수를 부여하는 수식입니다.

if(length(prop("제목")) > 10, 40, 0)
+ if(contains(prop("태그"), "SEO"), 30, 0)
+ if(prop("완료") == true, 30, 0)

 

이렇게 if 문이 덕지덕지 붙어 있으면, 나중에 "내가 이 점수를 왜 줬더라?" 하고 헷갈리게 됩니다. 이때 `lets()` 함수를 사용한다면 조금 더 수식을 편하게 이해하고 사용할 수 있게 됩니다. 😆

😄 After: lets로 의미 부여하기

lets(
  isLongTitle, length(prop("제목")) > 10,
  hasSEO, contains(prop("태그"), "SEO"),
  isComplete, prop("완료") == true,
  
  /* 논리가 명확한 최종 수식 */
  if(isLongTitle, 40, 0) + 
  if(hasSEO, 30, 0) + 
  if(isComplete, 30, 0)
)

 

[해석]

  • `isLongTitle: 제목이 긴가?
  • `hasSEO`: SEO 태그가 있는가?
  • `isComplete`: 완료되었는가?

각 조건에 이름을 붙여주니(변수 선언), 마지막 계산식이 마치 영어 문장을 읽는 것처럼 자연스러워졌죠? 이렇게 `lets()` 함수로 변수를 만들어두면 나중에 수식 또는 기준을 바꿔야 할 경우에도 특정 변수만 수정하면 되기 때문에 유지보수가 훨씬 편리해집니다.

수식은 가독성이 생명!

lets를 이용해 수식을 작성할 땐 한 줄로 작성하기보다 변수 하나당 한 줄씩, Shift + Enter로 구분해 두세요.

나중에 수식을 수정할 때 훨씬 수월해져요.

🏆 고급 예제: D-Day 상태 표시기 만들기

오늘 배운 `lets()`를 이용하면 복잡할 것만 같았던 기능을 훨씬 수월하게 구현할 수 있어요. 오늘은 많은 분들이 궁금해하시는 '디데이 계산 및 이모지 표시' 예제를 준비했습니다. (날짜 계산은 수식이 길어지기 쉬운 대표적인 영역이죠.)

 

목표: 남은 기간에 따라 다른 이모지를 보여주기

  • 기간 지남: 🔴
  • 오늘: 📌
  • 3일 이내: 🟡
  • 그 외: 🟢

`daysLeft`라는 변수에 날짜 차이 값을 미리 저장해 두었기 때문에, 아래 if 조건문에서 `dateBetween(...)` 함수를 계속 반복해서 쓸 필요가 없어졌습니다. 훨씬 깔끔하죠?

lets(
  /* 1. 디데이 계산 (오늘 날짜와 목표 날짜 차이) */
  daysLeft, dateBetween(prop("날짜"), now(), "days"),
  
  /* 2. 조건에 따른 결과 출력 */
  if(daysLeft < 0, "🔴 기간 지남",
    if(daysLeft == 0, "📌 오늘 마감",
      if(daysLeft <= 3, "🟡 " + format(daysLeft) + "일 전",
        "🟢 " + format(daysLeft) + "일 남음"
      )
    )
  )
)

⚠️ 초보자가 자주 하는 실수

`let()` / `lets()` 함수를 처음 쓸 때 자주 겪는 오류 2가지, 꼭 주의하세요.

 

1. 변수 이름에 띄어쓰기 금지

변수명은 하나의 단어여야 합니다. 띄어쓰기가 필요하다면 대문자나 언더바(_)를 활용하세요.

  • ❌ my score
  • ⭕ myScore 또는 my_score

2. 괄호 위치 주의

`let()` 함수는 `let(변수, 값, 결과)` 형태로, 마지막 괄호 )가 모든 수식을 감싸고 있어야 해요. 그리고 변수를 선언한 범위 밖에서는 그 변수를 사용할 수 없는 점도 꼭 기억하세요.

✅ 마무리

노션 수식은 어렵게 짜는 것보다, '나중에 다시 봤을 때 이해할 수 있게' 짜는 것이 실력이에요. 오늘 배운 `let()과 `lets() 함수로 여러분의 복잡한 데이터베이스를 깔끔하게 재구성해보세요!

 

더 궁금한 수식이 있거나 해결되지 않는 오류가 있다면 댓글로 남겨주세요! 확인 후 답변드리겠습니다. 🙂

 

❓자주 묻는 질문 (FAQ)

Q1. let 함수와 lets 함수의 차이점은 무엇인가요?

A. 가장 큰 차이는 '선언할 수 있는 변수의 개수'예요. `let()`은 1개, `lets()`는 2개 이상의 변수를 만들 수 있습니다. 보통은 확장성을 위해 처음부터 `lets()`를 사용하는 것을 추천합니다.

Q2. 수식이 짧은데도 꼭 써야 하나요?

A. 아주 단순한 수식(예: A + B)이라면 굳이 쓸 필요가 없습니다. 하지만 같은 계산식이 2번 이상 반복되거나, if 조건문이 중첩되어 복잡할 때는 `let()`을 쓰는 것이 유지보수에 훨씬 유리합니다.

Q3. 변수 이름은 아무거나 지어도 되나요?

A. 네, 가능합니다. 하지만 나중에 코드를 다시 볼 때를 대비해서 `a`, `b` 같은 의미 없는 문자보다는 `totalPrice`, `isDone`처럼 의미가 담긴 영단어를 사용하는 것이 좋습니다.