MYMONDAY.ai
서비스스튜디오도구데이터·포맷73CSS 생성기19색상·이미지10인코딩·보안10웹·SEO11개발·데브옵스10파일·내보내기18계산기6가이드

ICS 캘린더 복구

iCalendar 내보내기 파일의 흔하고 안전한 문제를 정리하고, 복구 전후의 일정 수와 오류 수를 나란히 확인합니다.

  • 브라우저에서 처리
  • 가입 없음
  • 무료

도구 작업 공간

예제

iCalendar(.ics) 텍스트

20줄386byte

복구

복구됨

고친 내용

  • 동일한 중복 일정 1개 제거
  • PRODID 추가
복구 전 · 일정2
복구 후 · 일정1
복구 전 · 오류1
복구 후 · 오류0

직접 확인이 필요한 문제

남은 문제가 없습니다.

안전한 복구만 자동으로 합니다. UID 누락, 뒤바뀐 시간 범위, 알 수 없는 TZID처럼 판단이 필요한 문제는 고치지 않고 목록에 남깁니다.

복구한 캘린더 · repaired.ics
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//MYMONDAY.AI//CalendarPrep//EN
BEGIN:VEVENT
UID:birthday@example.com
DTSTAMP:20261001T000000Z
DTSTART;VALUE=DATE:20280229
DTEND;VALUE=DATE:20280301
SUMMARY:Leap-day birthday
RRULE:FREQ=YEARLY
END:VEVENT
END:VCALENDAR

이 ICS 복구 도구는 맨 앞 BOM과 빈 줄을 없애고, 앞의 일정과 글자 하나까지 같은 일정을 지우고, 캘린더에 PRODID가 없으면 추가하며, 모든 줄 끝을 RFC 5545가 요구하는 CRLF로 씁니다. 그런 다음 원본과 복구본을 모두 검증해 고친 내용을 나열하고, 복구 전후의 일정 수와 오류 수를 보여 주며, 사람이 판단해야 할 문제는 따로 모아 둡니다.

일부러 보수적으로 동작합니다. 날짜를 추측하거나 UID를 다시 쓰거나 순서를 바꾸거나 비슷해 보이는 일정을 합치지 않습니다. UID가 같아도 내용이 다른 일정은 남깁니다. RECURRENCE-ID가 서로 다르면 정상 예외 회차이고, 같은 UID와 RECURRENCE-ID 조합을 다시 쓰면 보고합니다. 캘린더를 두 번 합친 경우, LF만 쓰는 스크립트가 만든 내보내기, 헤더 속성이 빠진 수작업 파일처럼 가져오기가 지저분해지는 흔한 원인에 알맞습니다.

입력한 내용은 브라우저 안에서 처리되며 서버로 전송되지 않습니다. 텍스트가 바뀔 때마다 복구를 다시 실행하고, 복구된 파일은 메모리에서 텍스트로 만들어집니다. 한도는 5 MiB이며 넘으면 복구본이 만들어지지 않습니다.

사용 방법

  1. 캘린더 불러오기

    파일 열기를 누르거나 .ics 파일을 편집기에 끌어다 놓거나 텍스트를 붙여 넣습니다. 페이지가 처음 여는 매년 생일 예제는 일정이 중복되고 PRODID가 없는 파일이며, 올바른 캘린더와 문제 있는 캘린더 예제로 다른 경우도 볼 수 있습니다.

  2. 고친 내용 확인

    무언가 바뀌었으면 배지에 복구됨이, 맨 앞 BOM·빈 줄·같은 중복이 없고 PRODID가 있으며 줄 끝이 CRLF이면 복구할 것이 없다는 문구가 나옵니다. 고친 내용 아래에는 완전히 같은 중복 일정 1개 제거, PRODID 추가, 줄 끝을 CRLF로 변환 같은 항목이 표시됩니다.

  3. 복구 전후 비교

    네 개의 숫자가 일정과 오류 각각의 복구 전, 복구 후 값을 보여 주므로 일정이 몇 개 빠졌는지, 오류가 줄었는지 바로 알 수 있습니다.

  4. 남은 문제 처리

    직접 확인이 필요한 문제에 남은 결과가 코드와 고치는 방법을 담은 문장과 함께 나열되고, 없으면 남은 문제가 없다고 표시됩니다. 판단이 필요한 문제이므로 원본 앱에서 고치거나 편집기에서 텍스트를 직접 고치며 목록이 바뀌는 것을 확인하세요.

  5. 내려받고 가져오기 시험

    복구한 .ics 내려받기를 눌러 repaired.ics를 저장하거나 아래 복구한 캘린더 보기에서 복사합니다. 먼저 임시 캘린더로 가져와 일정 수와 시각을 확인하고, 원본 파일은 백업으로 보관하세요.

작동 원리

무엇이 중복인가

중복은 줄 끝을 통일한 뒤 앞에 나온 VEVENT 블록과 텍스트가 줄 단위로 완전히 같은 VEVENT 블록입니다. 첫 번째 사본은 남기고 나중의 같은 사본은 버립니다. 비교는 정확해서 한 줄이라도 다르면, 예를 들어 DTSTAMP가 1초 차이거나 끝에 공백이 있어도 서로 다른 일정으로 보아 둘 다 남습니다.

UID가 같아도 텍스트가 다르면 삭제하지 않습니다. 고유한 RECURRENCE-ID가 있으면 정상 예외 회차이고, 없거나 같은 UID와 RECURRENCE-ID 조합이 반복되면 UID_DUPLICATE로 보고합니다.

PRODID와 줄 끝

RFC 5545는 캘린더를 만든 소프트웨어를 알리는 PRODID 속성을 요구합니다. 파일에 BEGIN:VCALENDAR와 VERSION:2.0 줄은 있는데 첫 일정 앞에 PRODID가 없으면, 복구는 VERSION 줄 바로 뒤에 PRODID:-//MYMONDAY.AI//CalendarPrep//EN을 넣습니다. 기존 PRODID는 절대 바꾸지 않습니다.

표준은 내용 줄이 CRLF(캐리지 리턴과 줄 바꿈)로 끝난다고 정합니다. 많은 스크립트가 LF만 쓰고, 일부 가져오기 도구는 그런 파일을 거부하거나 잘못 파싱합니다. 복구본은 항상 CRLF를 쓰고 CRLF로 끝나며, 긴 줄을 다시 접거나 속성 내용을 건드리지는 않습니다. 다만 붙여 넣은 텍스트는 원래 줄바꿈을 이미 잃었으므로 줄 끝을 CRLF로 변환 항목은 연 파일이나 예제에서만 표시되고, 내려받는 파일은 어느 경우든 CRLF입니다.

복구적용 조건절대 하지 않는 일
중복 VEVENT 제거앞의 블록과 완전히 같은 블록비슷한 일정을 합치거나 UID를 바꿈
PRODID 추가BEGIN:VCALENDAR와 VERSION:2.0이 있고 첫 일정 앞에 PRODID가 없음기존 PRODID를 교체
줄 끝 변환파일이 LF나 CR을 쓰거나 마지막 줄바꿈이 없음속성 값 변경이나 줄 접기

사용자에게 남겨 두는 것

판단이 필요한 결과는 직접 확인이 필요한 문제에 남습니다. 존재하지 않는 날짜, DTSTART보다 늦지 않은 DTEND, UID나 DTSTART 누락, 맞지 않는 BEGIN·END 줄, VTIMEZONE 없는 TZID 참조, 잘못된 RRULE이 그렇습니다. 도구는 이를 복구 뒤에 나열만 하고 바꾸지 않습니다. 자동으로 고르면 일정을 엉뚱한 시각으로 옮길 수 있기 때문입니다. 원본에서 오류가 난 줄은 편집기에 표시되어 찾기 쉽습니다.

실제 예시

중복 일정, PRODID 없음, LF 줄 끝
입력
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
UID:one@example.test
DTSTAMP:20270101T000000Z
DTSTART:20270301T090000Z
DTEND:20270301T100000Z
SUMMARY:One
END:VEVENT
BEGIN:VEVENT
UID:one@example.test
DTSTAMP:20270101T000000Z
DTSTART:20270301T090000Z
DTEND:20270301T100000Z
SUMMARY:One
END:VEVENT
END:VCALENDAR
출력
복구됨
고친 내용
- 완전히 같은 중복 일정 1개 제거
- PRODID 추가
- 줄 끝을 CRLF로 변환
복구 전 · 일정 2 | 복구 후 · 일정 1 | 복구 전 · 오류 1 | 복구 후 · 오류 0
직접 확인이 필요한 문제: 남은 문제가 없습니다.

repaired.ics
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//MYMONDAY.AI//CalendarPrep//EN
BEGIN:VEVENT
UID:one@example.test
DTSTAMP:20270101T000000Z
DTSTART:20270301T090000Z
DTEND:20270301T100000Z
SUMMARY:One
END:VEVENT
END:VCALENDAR

LF 줄 끝으로 저장된 파일을 연 경우입니다. 복구 전에는 오류 하나(UID_DUPLICATE)와 경고 둘(LINE_ENDINGS, PRODID)이 있고, 복구 후에는 없습니다. 같은 텍스트를 붙여 넣으면 같은 파일이 나오지만 고친 내용에는 앞의 두 항목만 나옵니다.

UID는 같고 내용은 다름
입력
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//x//EN
BEGIN:VEVENT
UID:s@x
DTSTAMP:20270101T000000Z
DTSTART:20270301T090000Z
DTEND:20270301T100000Z
SUMMARY:One
END:VEVENT
BEGIN:VEVENT
UID:s@x
DTSTAMP:20270101T000000Z
DTSTART:20270301T090000Z
DTEND:20270301T100000Z
SUMMARY:One
LOCATION:Room
END:VEVENT
END:VCALENDAR
출력
복구할 것이 없습니다. 중복 일정이 없고 PRODID가 있으며 줄 끝이 CRLF입니다.
복구 전 · 일정 2 | 복구 후 · 일정 2 | 복구 전 · 오류 1 | 복구 후 · 오류 1
직접 확인이 필요한 문제:
오류  UID_DUPLICATE  앞선 일정이 이미 쓴 UID입니다. 일정마다 고유한 UID를 주세요.

PRODID가 있는 CRLF 파일입니다. 두 번째 일정에 LOCATION 줄이 있어 둘 다 남고, 12번째 줄의 공유된 UID는 직접 정리하도록 계속 보고됩니다.

시작과 종료가 뒤바뀐 경우
입력
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//t//EN
BEGIN:VEVENT
UID:r
DTSTAMP:20270101T000000Z
DTSTART:20270301T090000Z
DTEND:20270301T080000Z
END:VEVENT
END:VCALENDAR
출력
복구할 것이 없습니다. 중복 일정이 없고 PRODID가 있으며 줄 끝이 CRLF입니다.
복구 전 · 일정 1 | 복구 후 · 일정 1 | 복구 전 · 오류 1 | 복구 후 · 오류 1
직접 확인이 필요한 문제:
오류  DTEND_BEFORE_START  DTEND는 DTSTART보다 뒤여야 합니다.

CRLF 파일입니다. 시작과 종료 중 어느 쪽이 틀렸는지 도구가 알 수 없으므로 8번째 줄의 오류가 남고, 그 줄은 편집기에 표시됩니다.

자주 하는 실수

  • 비슷한 중복은 제거되지 않음

    DTSTAMP, SEQUENCE, 끝 공백만 다른 두 일정은 서로 다른 일정으로 취급됩니다. 같은 파일을 새 타임스탬프로 두 번 가져와서 생긴 중복이라면 일부는 캘린더 앱에서 직접이나 UID 기준으로 지워야 합니다.

  • 첫 번째 사본이 남음

    같은 일정을 제거할 때 가장 앞의 블록이 남고 나중 것이 버려집니다. 서로 같기 때문에 잃는 것은 없고 남은 일정의 순서는 원본 그대로입니다.

  • 복구된 파일도 여전히 무효일 수 있음

    복구 후 오류 숫자는 복구본에 아직 남은 오류의 수입니다. 0보다 크면 아직 가져오지 말고 원본이나 이 편집기에서 바로 고치세요.

  • PRODID는 VERSION 옆에만 추가됨

    파일에 VERSION:2.0 줄이 없으면 PRODID도 추가되지 않고 VERSION 오류가 남습니다. 먼저 BEGIN:VCALENDAR 바로 뒤에 VERSION:2.0을 넣으면 다음 실행에서 PRODID도 붙습니다.

  • 변환 도구가 아님

    기존 iCalendar 파일의 구조를 복구할 뿐 시간대 변경, CSV 변환, 반복 규칙 수정은 하지 않습니다. 스프레드시트로 캘린더를 만들려면 CSV 변환기를 쓰세요.

자주 묻는 질문

캘린더에 모든 일정이 두 번씩 보이는 이유는?

대개 파일을 두 번 가져왔거나 캘린더 두 개를 합쳤기 때문입니다. 완전히 같은 사본이라면 이 도구가 파일에서 제거하고, 복구 후 일정 숫자로 몇 개가 남았는지 보여 줍니다. 캘린더 앱에 이미 중복이 들어갔다면 그곳에서도 추가로 가져온 것을 지우세요.

일정 시각이 바뀌나요?

아니요. 맨 앞 BOM과 빈 줄 제거, 같은 블록 제거, PRODID 추가, CRLF 정규화만 합니다. 날짜, 시각, 시간대, 반복 규칙은 그대로 둡니다.

어떤 PRODID를 추가하나요?

PRODID:-//MYMONDAY.AI//CalendarPrep//EN을 VERSION 줄 뒤에 넣으며, 파일에 PRODID가 없을 때만 넣습니다.

내려받기 버튼이 보이지 않아요.

복구한 .ics 내려받기는 복구본이 만들어졌을 때만 나타납니다. 입력이 비어 있거나 파일이 5 MiB를 넘으면 복구본이 없으니 더 작거나 비어 있지 않은 파일을 불러오세요.

파일을 붙여 넣었더니 줄 끝 변환 항목이 없어요.

붙여 넣은 텍스트는 브라우저가 이미 LF로 바꿔 버려 원래 줄 끝을 알 수 없으므로 고쳤다고 표시하지 않습니다. 그래도 내려받는 복구본은 CRLF입니다. 이 항목까지 보려면 파일을 직접 여세요.

캘린더 두 개를 합칠 수 있나요?

아니요. 한 번에 파일 하나만 복구합니다. 두 파일의 일정을 하나의 VCALENDAR로 이어 붙이는 일은 수작업이며, 그 뒤에 이 도구로 완전히 같은 중복을 제거할 수 있습니다.

캘린더가 업로드되나요?

아니요. 입력한 내용은 브라우저 안에서 처리되며 서버로 전송되지 않으므로, 캘린더 안의 참석자와 장소도 기기 밖으로 나가지 않습니다.

마지막 업데이트: