- 공유 링크 만들기
- X
- 이메일
- 기타 앱
노션에 할 일 목록이나 프로젝트 일정을 열심히 입력하고 계신가요? 아마 많은 분들이 ‘마감일’ 속성에 날짜를 입력하고, 그 옆에 ‘상태’ 속성을 따로 두어 ‘진행 중’, ‘마감 임박’, ‘기한 초과’ 같은 값을 매번 손으로 직접 선택하고 계실 거예요.
하지만 한번 생각해보세요. 마감일이 오늘이면 ‘D-DAY’라고, 마감일이 이미 지났다면 ‘기한 초과’라고 노션이 알아서 척척 표시해준다면 얼마나 편리할까요? 매일 아침마다 일일이 날짜를 확인하며 상태를 바꿀 필요가 없어지는 거예요.
이런 똑똑한 자동화를 가능하게 해주는 첫 번째 관문이 바로 ‘IF 함수’입니다. 오늘은 이 IF 함수를 이용해서, 노션이 스스로 생각하고 판단하게 만드는 가장 기초적이면서도 강력한 D-day 계산기를 만들어 볼 거예요. 처음엔 조금 복잡해 보일 수 있지만, 이 원리 하나만 이해하면 여러분의 노션 활용도는 완전히 달라질 겁니다.
1. 자동화의 핵심, IF 함수는 어떻게 작동할까요?
IF 함수는 노션 함수 중에서 가장 기본이 되는 ‘논리’ 함수예요. 쉽게 말해, 노션에게 ‘이것저것 따져보고 결정하게’ 시키는 기능이죠.
IF 함수의 기본 구조는 아주 간단해요.
if(조건, 조건이 참일 때 할 일, 조건이 거짓일 때 할 일)
마치 우리가 일상에서 생각하는 방식과 같아요.
‘만약(if) 내일 비가 온다면(조건), 우산을 챙긴다(참일 때 할 일). 그렇지 않다면, 그냥 나간다(거짓일 때 할 일).’
노션 함수에서도 똑같습니다. 예를 들어, ‘숫자’ 속성의 값이 100보다 크면 “통과”, 작으면 “실패”를 표시하게 만들 수 있어요.
if(prop("숫자") > 100, "통과", "실패")
IF 함수의 진짜 힘은 이 ‘거짓일 때 할 일’ 부분에 또 다른 IF 함수를 집어넣어, 꼬리에 꼬리를 무는 질문을 계속 만들 수 있다는 점에 있어요. 이걸 ‘중첩 IF 함수’라고 부르는데, 오늘 만들 D-day 계산기가 바로 이 방식을 사용하게 될 거예요.
2. D-day 계산기에 필요한 함수 재료 알아보기
D-day 계산기라는 하나의 멋진 요리를 만들기 위해, 몇 가지 재료 함수들을 미리 알아두면 좋아요.
- 하나. dateBetween(날짜1, 날짜2, "단위") - 두 날짜 사이의 간격을 계산해주는 함수예요. dateBetween(prop("마감일"), now(), "days") 라고 쓰면, 마감일과 ‘지금(now)’ 사이의 날짜 차이를 ‘일(days)’ 단위로 알려줍니다.
- 둘. start(날짜) - 이게 정말 중요한데요, 노션의 now() 함수는 현재 ‘시각’까지 포함하고 있어요. 그래서 마감일이 오늘이라도, 지금 시각이 마감일의 오전 0시를 지났기 때문에 하루가 지난 것처럼 계산되는 문제가 생겨요. start() 함수는 이 시각 정보를 싹 지우고, ‘오늘의 시작(오전 0시)’으로 시간을 통일시켜 줍니다. start(now()) 와 start(prop("마감일")) 을 비교해야 우리가 원하는 정확한 D-day 계산이 가능해져요.
- 셋. format(숫자) - 함수에서는 텍스트와 숫자를 그냥 더할 수 없어요. 예를 들어, "D-" + 3 이라고 쓰면 에러가 나요. format(3) 처럼 함수를 써서 숫자 3을 텍스트 "3"으로 변환시켜 줘야만, "D-" + "3" = "D-3" 처럼 글자를 합칠 수 있습니다.
- 넷. abs(숫자) - 숫자의 부호를 없애고 절대값으로 만들어주는 함수예요. 마감일이 3일 지났다면 dateBetween의 결과가 -3으로 나오는데, 우리는 “D+3”이라고 표시하고 싶잖아요? 이때 abs(-3)을 쓰면 숫자 3을 얻을 수 있습니다.
- 다섯. empty(속성) - 해당 속성이 비어있는지(true) 아닌지(false)를 확인해줘요. 마감일 칸이 비어있으면 D-day 계산을 하면 안 되니까, 가장 먼저 이걸로 체크해줘야 합니다.
3. 실전! D-day 자동 계산 함수 만들기 (단계별 조합)
이제 위에서 배운 재료들을 섞어서, IF 함수로 완벽한 D-day 계산기를 만들어 볼게요.
우리가 원하는 논리의 순서는 이렇습니다.
- 먼저, ‘마감일’ 칸이 비어있는지 확인한다.
- 비어있다면, “🗓️ 날짜 없음”이라고 표시한다.
- 비어있지 않다면, 오늘 날짜와 마감일이 같은지 확인한다. (D-DAY)
- 오늘과 날짜가 다르다면, 마감일이 오늘보다 미래인지(D-) 과거인지(D+) 확인한다.
이 논리를 노션 함수로 그대로 옮겨 볼게요.
먼저, ‘마감일’이라는 이름의 ‘날짜’ 속성을 준비해주세요.
그리고 ‘D-day’라는 이름의 ‘함수’ 속성을 새로 추가하고, 함수 편집창에 아래의 수식을 입력하면 됩니다.
if(empty(prop("마감일")), "🗓️ 날짜 없음", if(dateBetween(start(prop("마감일")),
start(now()), "days") == 0, "🔥 D-DAY!", if(dateBetween(start(prop("마감일")),
start(now()), "days") > 0, "D-" + format(dateBetween(start(prop("마감일")),
start(now()), "days")), "D+" + format(abs(dateBetween(start(prop("마감일")),
start(now()), "days"))))))
4. 함수 수식 상세 해부하기
방금 본 수식이 너무 길고 복잡해 보일 수 있지만, 사실은 아주 간단한 IF 문장들이 겹겹이 쌓여있는 것뿐이에요. 하나씩 차근차근 분해해 볼게요.
- 첫 번째 IF (날짜가 비었는지?): if(empty(prop("마감일")), "🗓️ 날짜 없음", ...)
"만약 '마감일' 속성이 비어있다면, '🗓️ 날짜 없음'을 표시하고, 그렇지 않다면(...) 두 번째 IF로 넘어가라."
- 두 번째 IF (오늘인지?): if(dateBetween(start(prop("마감일")), start(now()), "days") == 0, "🔥 D-DAY!", ...)
"마감일(의 시작)과 오늘(의 시작) 날짜 차이가 0일(== 0)과 같다면, '🔥 D-DAY!'를 표시하고, 그렇지 않다면(...) 세 번째 IF로 넘어가라."
- 세 번째 IF (미래인지 과거인지?): if(dateBetween(start(prop("마감일")), start(now()), "days") > 0, ... , ...) "날짜 차이가 0보다 크다면(> 0, 즉 마감일이 미래라면), ... (D- 계산)을 하고, 그렇지 않다면(즉 0보다 작고, 과거라면), ... (D+ 계산)을 해라."
- D- 계산: "D-" + format(dateBetween(start(prop("마감일")), start(now()), "days")) "텍스트 'D-'와 날짜 차이를 텍스트로 변환한 값을 합쳐라." (예: "D-" + "3" = "D-3")
D+ 계산: "D+" + format(abs(dateBetween(start(prop("마감일")), start(now()), "days"))))
"텍스트 'D+'와 (날짜 차이가 -7이라면) 절대값 7을 텍스트로 변환한 값을 합쳐라." (예: "D+" + "7" = "D+7")
함수는 처음 접할 때가 가장 어렵게 느껴져요. 하지만 오늘 만든 이 D-day 계산기 수식 하나만 여러분의 데이터베이스에 적용해두면, 더 이상 수동으로 날짜를 계산하거나 상태를 업데이트하는 반복 작업을 하지 않아도 됩니다.
이 수식을 그대로 복사해서 여러분의 ‘마감일’ 속성 이름만 맞게 수정해서 한번 사용해보세요. 여러분의 노션이 훨씬 더 똑똑하게 작동하는 것을 바로 경험하실 수 있을 거예요.




댓글
댓글 쓰기