노션 내 반복 일정(Recurring Tasks) 자동 생성을 위한 수식 및 자동화 트릭
매주 작성하는 업무보고, 매월 결제하는 구독료, 정기적인 서버 점검처럼 같은 일정이 반복되는 업무가 있습니다.
이런 일정을 매번 직접 복사하면 날짜를 잘못 입력하거나 할 일을 빠뜨리기 쉽습니다. 노션에서는 반복 데이터베이스 템플릿과 수식, 데이터베이스 자동화를 조합해 반복 일정을 보다 편리하게 관리할 수 있습니다.
하지만 세 가지 기능은 역할이 서로 다릅니다.
- 반복 템플릿: 정해진 주기에 따라 새로운 페이지를 생성합니다.
- 수식: 기존 날짜를 기준으로 다음 예정일을 계산합니다.
- 데이터베이스 자동화: 조건이 충족되면 속성 변경이나 페이지 생성 등의 작업을 실행합니다.
이 차이를 이해해야 중복 일정이 만들어지거나 완료한 업무의 날짜가 예상과 다르게 바뀌는 문제를 줄일 수 있습니다.
반복 일정 자동화 구조
노션에서 반복 업무를 관리하는 기본 흐름은 다음과 같습니다.
- 반복 업무를 저장할 데이터베이스를 만듭니다.
- 업무명, 마감일, 반복 주기, 상태 등의 속성을 추가합니다.
- 수식으로 다음 예정일을 계산합니다.
- 반복 데이터베이스 템플릿을 설정합니다.
- 필요하다면 데이터베이스 자동화로 상태나 담당자를 변경합니다.
- 필터를 이용해 오늘 처리할 업무만 표시합니다.
한 줄로 정리하면 다음과 같습니다.
반복 업무 등록 → 반복 주기 선택 → 다음 예정일 계산 → 새 작업 생성 → 담당자 지정 → 완료 상태 관리
1. 반복 업무 데이터베이스 만들기
먼저 노션에서 새 데이터베이스를 만들고 다음 속성을 추가합니다.
| 속성 이름 | 속성 유형 | 용도 |
|---|---|---|
| 업무명 | 제목 | 반복 업무의 이름 |
| 시작일 | 날짜 | 현재 업무가 시작되는 날짜 |
| 완료일 | 날짜 | 실제 업무를 완료한 날짜 |
| 상태 | 상태 | 예정, 진행 중, 완료 구분 |
| 반복 주기 | 선택 | 매일, 매주, 매월, 매년 |
| 반복 간격 | 숫자 | 1주, 2주, 3개월 등의 간격 |
| 다음 예정일 | 수식 | 다음 업무 날짜 자동 계산 |
| 담당자 | 사람 | 업무 담당자 지정 |
| 반복 사용 | 체크박스 | 반복 업무 여부 구분 |
반복 간격을 별도의 숫자 속성으로 만들면 매주뿐만 아니라 2주마다 또는 3개월마다 실행되는 일정도 하나의 수식으로 관리할 수 있습니다.
예시는 다음과 같습니다.
| 업무명 | 시작일 | 반복 주기 | 반복 간격 |
|---|---|---|---|
| 주간 업무보고 | 2026년 9월 7일 | 매주 | 1 |
| 격주 회의 | 2026년 9월 14일 | 매주 | 2 |
| 정기 구독료 확인 | 2026년 9월 1일 | 매월 | 1 |
| 도메인 갱신 확인 | 2026년 10월 1일 | 매년 | 1 |
2. 가장 간단한 다음 예정일 수식
일주일마다 반복되는 업무라면 다음 수식을 사용할 수 있습니다.
dateAdd(prop("시작일"), 1, "weeks")
시작일이 2026년 9월 7일이라면 다음 예정일은 2026년 9월 14일로 계산됩니다.
매일 반복되는 업무는 다음과 같습니다.
dateAdd(prop("시작일"), 1, "days")
매월 반복되는 업무는 다음과 같습니다.
dateAdd(prop("시작일"), 1, "months")
매년 반복되는 업무는 다음과 같습니다.
dateAdd(prop("시작일"), 1, "years")
여기서 주의할 점은 수식이 새로운 작업 페이지를 만드는 것은 아니라는 것입니다.
수식은 현재 페이지 안에서 다음 날짜를 계산해 보여주는 역할만 합니다. 실제로 다음 업무를 새로운 페이지로 생성하려면 반복 템플릿이나 데이터베이스 자동화가 필요합니다.
3. 반복 주기에 따라 날짜를 계산하는 수식
하나의 데이터베이스에서 매일, 매주, 매월, 매년 반복되는 업무를 함께 관리하려면 ifs() 함수를 사용할 수 있습니다.
ifs(
prop("반복 주기") == "매일",
dateAdd(prop("시작일"), 1, "days"),
prop("반복 주기") == "매주",
dateAdd(prop("시작일"), 1, "weeks"),
prop("반복 주기") == "매월",
dateAdd(prop("시작일"), 1, "months"),
prop("반복 주기") == "매년",
dateAdd(prop("시작일"), 1, "years"),
prop("시작일")
)
이 수식은 반복 주기 속성에서 선택한 항목에 따라 다음 날짜를 계산합니다.
- 매일을 선택하면 하루를 더합니다.
- 매주를 선택하면 일주일을 더합니다.
- 매월을 선택하면 한 달을 더합니다.
- 매년을 선택하면 일 년을 더합니다.
- 반복 주기를 선택하지 않으면 시작일을 그대로 표시합니다.
4. 반복 간격까지 적용하는 실전 수식
2주마다, 3개월마다처럼 반복 간격이 다른 업무를 관리하려면 숫자 속성인 반복 간격을 수식에 적용합니다.
ifs(
empty(prop("시작일")),
"",
prop("반복 주기") == "매일",
dateAdd(prop("시작일"), prop("반복 간격"), "days"),
prop("반복 주기") == "매주",
dateAdd(prop("시작일"), prop("반복 간격"), "weeks"),
prop("반복 주기") == "매월",
dateAdd(prop("시작일"), prop("반복 간격"), "months"),
prop("반복 주기") == "매년",
dateAdd(prop("시작일"), prop("반복 간격"), "years"),
prop("시작일")
)
예를 들어 다음과 같이 계산됩니다.
| 시작일 | 반복 주기 | 반복 간격 | 다음 예정일 |
|---|---|---|---|
| 9월 1일 | 매일 | 3 | 9월 4일 |
| 9월 1일 | 매주 | 2 | 9월 15일 |
| 9월 1일 | 매월 | 3 | 12월 1일 |
| 9월 1일 | 매년 | 1 | 다음 해 9월 1일 |
반복 간격을 입력하지 않았을 때 오류가 발생하지 않도록 기본값을 1로 처리할 수도 있습니다.
lets(
interval,
if(empty(prop("반복 간격")), 1, prop("반복 간격")),
ifs(
empty(prop("시작일")),
"",
prop("반복 주기") == "매일",
dateAdd(prop("시작일"), interval, "days"),
prop("반복 주기") == "매주",
dateAdd(prop("시작일"), interval, "weeks"),
prop("반복 주기") == "매월",
dateAdd(prop("시작일"), interval, "months"),
prop("반복 주기") == "매년",
dateAdd(prop("시작일"), interval, "years"),
prop("시작일")
)
)
이 수식에서는 반복 간격이 비어 있으면 자동으로 1을 사용합니다.
5. 완료일을 기준으로 다음 일정 계산하기
일정이 밀릴 때는 처음 계획한 날짜보다 실제 완료일을 기준으로 다음 업무를 정하는 것이 더 적합할 수 있습니다.
예를 들어 9월 1일에 해야 할 점검을 9월 4일에 완료했다면, 다음 점검을 10월 1일이 아니라 10월 4일로 설정하는 방식입니다.
lets(
baseDate,
if(empty(prop("완료일")), prop("시작일"), prop("완료일")),
interval,
if(empty(prop("반복 간격")), 1, prop("반복 간격")),
ifs(
empty(baseDate),
"",
prop("반복 주기") == "매일",
dateAdd(baseDate, interval, "days"),
prop("반복 주기") == "매주",
dateAdd(baseDate, interval, "weeks"),
prop("반복 주기") == "매월",
dateAdd(baseDate, interval, "months"),
prop("반복 주기") == "매년",
dateAdd(baseDate, interval, "years"),
baseDate
)
)
이 수식은 완료일이 입력돼 있으면 완료일을 사용하고, 완료일이 비어 있으면 시작일을 기준으로 계산합니다.
다만 월세 납부나 정기 보고처럼 날짜가 밀려도 다음 일정은 원래 계획대로 유지해야 하는 업무에는 시작일 기준 계산이 더 적합합니다.
6. 일정이 지났는지 표시하는 수식
반복 업무가 많아지면 어떤 일정이 지났는지 빠르게 확인하기 어렵습니다.
다음 수식을 추가하면 일정 상태를 자동으로 표시할 수 있습니다.
ifs(
prop("상태") == "완료",
"✅ 완료",
empty(prop("시작일")),
"⚪ 날짜 없음",
prop("시작일") < today(),
"🔴 기한 지남",
prop("시작일") == today(),
"🟡 오늘",
dateBetween(prop("시작일"), today(), "days") <= 3,
"🟠 곧 예정",
"🟢 여유"
)
이 수식을 사용하면 상태를 다음처럼 구분할 수 있습니다.
- 완료된 업무: 완료
- 날짜가 없는 업무: 날짜 없음
- 마감일이 지난 업무: 기한 지남
- 오늘 처리할 업무: 오늘
- 3일 이내 업무: 곧 예정
- 그 이후 일정: 여유
날짜 속성에 시간이 포함돼 있으면 오늘 날짜와 정확히 일치하지 않을 수 있습니다. 이런 경우에는 formatDate()를 사용해 날짜 부분만 비교할 수 있습니다.
ifs(
prop("상태") == "완료",
"✅ 완료",
empty(prop("시작일")),
"⚪ 날짜 없음",
formatDate(prop("시작일"), "YYYY-MM-DD") ==
formatDate(now(), "YYYY-MM-DD"),
"🟡 오늘",
prop("시작일") < now(),
"🔴 기한 지남",
"🟢 예정"
)
7. 반복 데이터베이스 템플릿 설정하기
노션에서 실제로 새로운 반복 업무를 자동 생성하는 가장 간단한 방법은 반복 데이터베이스 템플릿입니다.
노션의 반복 템플릿은 설정한 주기에 따라 해당 데이터베이스 안에 템플릿 복사본을 자동으로 생성할 수 있습니다. 일간, 주간, 월간, 연간 반복을 설정할 수 있습니다.
설정 순서는 다음과 같습니다.
- 반복 업무 데이터베이스를 엽니다.
- 오른쪽 위
새로 만들기버튼 옆의 화살표를 누릅니다. 새 템플릿을 선택합니다.- 템플릿 이름을 입력합니다.
- 상태, 담당자, 반복 주기 등 기본 속성을 설정합니다.
- 템플릿 목록에서 해당 템플릿 옆의 점 세 개 버튼을 누릅니다.
반복메뉴를 선택합니다.- 매일, 매주, 매월 또는 매년 중 원하는 주기를 선택합니다.
- 시작 날짜와 생성 시간을 지정합니다.
예를 들어 매주 월요일 오전 9시에 주간 업무보고 페이지를 만들고 싶다면 다음과 같이 설정할 수 있습니다.
- 템플릿 이름: 주간 업무보고
- 상태: 예정
- 담당자: 업무 담당자
- 반복 주기: 매주
- 반복 요일: 월요일
- 생성 시간: 오전 9시
템플릿 본문에는 다음과 같은 체크리스트를 미리 넣을 수 있습니다.
이번 주 주요 업무
- 완료한 업무 정리
- 진행 중인 업무 확인
- 다음 주 계획 작성
- 해결이 필요한 문제 기록
- 관련 자료 및 링크 첨부
페이지가 생성될 때마다 같은 기본 구조가 자동으로 복사되므로 반복 보고서나 점검표를 만들 때 유용합니다.
8. 매월 말일 반복 일정의 주의점
dateAdd()를 사용해 매월 반복 일정을 계산할 때는 날짜가 존재하지 않는 달을 주의해야 합니다.
예를 들어 1월 31일에서 한 달을 더하면 2월에는 31일이 없기 때문에 기대한 결과와 다르게 표시될 수 있습니다.
매월 마지막 날에 처리해야 하는 업무라면 특정 날짜에 한 달을 더하는 방식보다 다음과 같이 운영하는 것이 안정적입니다.
- 반복 템플릿을 매월 28일에 생성합니다.
- 실제 마감일은 해당 월의 마지막 날로 따로 관리합니다.
- 또는 매월 1일에 페이지를 생성하고 월말까지 완료하도록 설정합니다.
급여 정산, 월간 결산처럼 월말이 중요한 업무는 수식 결과만 믿지 말고 실제 표시 날짜를 테스트해야 합니다.
9. 데이터베이스 자동화 활용하기
유료 플랜에서는 데이터베이스 상단의 번개 모양 버튼을 이용해 자동화를 만들 수 있습니다.
기본 설정 순서는 다음과 같습니다.
- 데이터베이스 상단의 번개 모양 버튼을 누릅니다.
새 자동화를 선택합니다.- 자동화 이름을 입력합니다.
- 실행 조건을 선택합니다.
- 실행할 동작을 추가합니다.
- 테스트 후 자동화를 활성화합니다.
활용할 수 있는 예시는 다음과 같습니다.
새 업무 생성 시 담당자 지정
- 실행 조건: 새 페이지가 추가될 때
- 실행 동작: 담당자를 특정 사용자로 변경
- 추가 동작: 상태를 예정으로 설정
업무 상태가 완료로 변경될 때 완료일 입력
- 실행 조건: 상태가 완료로 변경될 때
- 실행 동작: 완료일을 현재 날짜로 설정
마감일 변경 시 담당자 알림
- 실행 조건: 시작일 또는 마감일 속성이 변경될 때
- 실행 동작: 담당자에게 알림 전송
데이터베이스 자동화는 유료 플랜에서 제공되며, 데이터베이스에 전체 접근 권한이 있어야 자동화를 생성하거나 수정할 수 있습니다.
10. 반복 템플릿과 자동화가 연속 실행되지 않는 이유
반복 템플릿으로 페이지가 생성되면 그 페이지를 조건으로 또 다른 데이터베이스 자동화가 실행될 것이라고 생각하기 쉽습니다.
하지만 노션에서는 자동화에 의해 실행된 작업이 다른 자동화를 다시 작동시키지 않도록 제한되는 경우가 있습니다.
특히 반복 템플릿으로 생성된 페이지는 데이터베이스 자동화를 작동시키지 않으며, 한 자동화가 만든 페이지가 다른 자동화를 연속 실행시키지도 않습니다. 반면 사용자가 버튼을 눌러 만든 페이지는 데이터베이스 자동화를 실행할 수 있습니다.
따라서 다음과 같은 구조는 예상대로 동작하지 않을 수 있습니다.
반복 템플릿으로 페이지 생성 → 데이터베이스 자동화 실행 → 다른 페이지 생성
이 경우 담당자, 상태, 반복 주기처럼 반드시 필요한 값은 반복 템플릿 자체에 미리 입력하는 것이 좋습니다.
11. 버튼으로 다음 반복 업무 만들기
업무를 완료한 시점에 사용자가 직접 다음 일정을 만들고 싶다면 버튼 속성을 활용할 수 있습니다.
버튼 방식은 완전 자동은 아니지만 다음과 같은 장점이 있습니다.
- 사용자가 원하는 시점에만 다음 업무를 생성할 수 있습니다.
- 자동 생성된 불필요한 일정이 쌓이지 않습니다.
- 완료가 늦어진 경우 실제 완료일을 기준으로 다음 업무를 만들 수 있습니다.
- 버튼 작업으로 생성된 페이지는 자동화 조건과 연결하기가 상대적으로 쉽습니다.
버튼 이름은 다음처럼 설정할 수 있습니다.
다음 반복 업무 만들기
버튼 동작은 다음과 같이 구성합니다.
- 현재 업무 상태를 완료로 변경합니다.
- 완료일을 현재 날짜로 입력합니다.
- 같은 데이터베이스에 새 페이지를 추가합니다.
- 업무명과 담당자를 복사합니다.
- 새 페이지의 상태를 예정으로 설정합니다.
- 다음 예정일을 새 페이지의 시작일로 사용합니다.
노션 화면과 플랜에 따라 버튼에서 사용할 수 있는 세부 동작이 다를 수 있으므로 실제 데이터베이스에서 제공되는 항목을 확인해야 합니다.
12. 오늘 해야 할 반복 업무만 표시하기
반복 업무가 많다면 전체 데이터베이스를 그대로 보는 것보다 별도의 보기를 만드는 것이 좋습니다.
오늘 할 일 보기
다음 조건으로 필터를 설정합니다.
- 시작일이 오늘
- 상태가 완료가 아님
기한이 지난 업무 보기
다음 조건을 사용합니다.
- 시작일이 오늘보다 이전
- 상태가 완료가 아님
이번 주 일정 보기
다음 조건을 사용합니다.
- 시작일이 이번 주 이내
- 상태가 완료가 아님
반복 업무만 보기
다음 조건을 사용합니다.
- 반복 사용이 체크됨
보기를 구분하면 같은 데이터베이스를 사용하면서도 오늘 할 일, 미완료 업무, 반복 업무를 각각 확인할 수 있습니다.
13. 반복 업무가 중복 생성되는 문제 해결법
같은 업무가 여러 개 생성된다면 다음 항목을 확인해야 합니다.
반복 템플릿이 두 개 이상 설정된 경우
이름이 비슷한 템플릿에 모두 반복 설정이 적용돼 있을 수 있습니다.
새로 만들기 버튼 옆 화살표를 누른 후 각 템플릿의 반복 설정을 확인합니다.
자동화와 반복 템플릿을 동시에 사용한 경우
반복 템플릿과 외부 자동화 도구가 같은 시간에 페이지를 만들고 있을 수 있습니다.
새 페이지 생성 역할은 한 가지 기능에만 맡기는 것이 안전합니다.
기존 업무를 복제하면서 반복 설정까지 유지한 경우
페이지를 직접 복제하면서 반복 템플릿도 활성화해 두면 같은 업무가 겹칠 수 있습니다.
직접 복제한 페이지와 자동 생성 페이지를 구분할 수 있도록 생성 방식 속성을 추가하는 것도 좋습니다.
예시는 다음과 같습니다.
- 반복 템플릿
- 수동 생성
- 버튼 생성
- 외부 자동화
14. 수식이 작동하지 않을 때 확인할 부분
속성 이름이 다른 경우
수식의 prop("시작일")과 실제 데이터베이스 속성 이름이 정확히 같아야 합니다.
띄어쓰기까지 다르면 해당 속성을 찾지 못할 수 있습니다.
날짜가 비어 있는 경우
빈 날짜에 dateAdd()를 적용하면 오류가 발생할 수 있습니다.
다음과 같이 empty() 조건을 먼저 확인합니다.
if(
empty(prop("시작일")),
"",
dateAdd(prop("시작일"), 1, "weeks")
)
반복 간격이 비어 있는 경우
숫자 속성이 비어 있으면 기본값을 적용합니다.
if(
empty(prop("반복 간격")),
1,
prop("반복 간격")
)
선택 옵션 이름이 다른 경우
수식에는 매주라고 입력했는데 실제 선택 옵션이 주간이라면 조건이 일치하지 않습니다.
수식의 문자와 선택 속성의 옵션 이름을 동일하게 설정해야 합니다.
날짜에 시간이 포함된 경우
날짜와 시간을 함께 사용하는 속성은 today()와 비교했을 때 예상과 다른 결과가 나올 수 있습니다.
필요하다면 formatDate()를 사용해 날짜 형식을 통일합니다.
15. 반복 일정 관리에 적합한 방법 선택하기
반복 일정의 성격에 따라 적합한 기능이 달라집니다.
| 사용 목적 | 추천 방법 |
|---|---|
| 매일 같은 체크리스트 생성 | 반복 데이터베이스 템플릿 |
| 매주 같은 보고서 생성 | 반복 데이터베이스 템플릿 |
| 다음 예정일만 확인 | dateAdd 수식 |
| 2주·3개월 등 간격 계산 | 반복 간격 속성+수식 |
| 완료 후 다음 업무 생성 | 버튼 또는 외부 자동화 |
| 담당자와 상태 자동 변경 | 데이터베이스 자동화 |
| 여러 서비스와 연동 | Notion API 또는 외부 자동화 |
| 과도한 업무 생성을 방지 | 수동 버튼 방식 |
가장 간단하고 안정적인 방법은 반복 데이터베이스 템플릿입니다.
수식은 다음 날짜를 계산하는 용도로 사용하고, 자동화는 담당자 지정이나 상태 변경 같은 보조 작업에 사용하는 것이 관리하기 쉽습니다.
마무리
노션에서 반복 일정을 자동화할 때는 수식 하나만으로 모든 기능을 구현하려고 하기보다 각 기능의 역할을 나눠야 합니다.
수식은 다음 예정일을 계산하지만 새로운 페이지를 만들지는 않습니다. 실제 업무 페이지를 정기적으로 생성하려면 반복 데이터베이스 템플릿을 사용해야 합니다.
완료 시점에 따라 다음 일정이 달라지는 업무는 버튼이나 별도의 자동화 방식이 더 적합할 수 있습니다.
처음에는 다음과 같이 단순하게 구성하는 것이 좋습니다.
- 반복 템플릿으로 새 업무 생성
- 수식으로 다음 예정일 표시
- 상태 속성으로 완료 여부 관리
- 필터로 오늘 할 일만 표시
이후 반복 업무가 많아지면 반복 간격, 완료일 기준 계산, 담당자 알림 및 외부 API 연동을 단계적으로 추가하면 됩니다.




댓글 0
첫 댓글을 남겨보세요.