RFC 5545를 사용한 .ics 파일 이해

어제 비가 많이 와서 몇 시간 동안 가게에 갇혀 있었어요. 심심해서 구글캘린더를 iOS의 애플캘린더에 연결해서 시간을 보내기로 했습니다.

그렇게 하던 중 SUBSCRIPTION URL 파일에 .ics 파일이 있는 "구독 캘린더 추가"옵션을 찾았습니다. 궁금해서 ics 파일에 대해 자세히 읽기 시작했습니다.



이 블로그에서는 .ics 파일의 신비를 풀고 자체 파일을 만들어 캘린더에 통합할 것입니다! Google 캘린더를 사용하는 경우 설정에서 .ics 파일을 내보낼 수 있습니다.

.ics 파일이란 무엇입니까?



ics의 파일 이름 확장자는 일정 및 일정 정보를 포함하는 파일에 사용됩니다. 파일 형식은 RFC 5545에 지정되어 특정 캘린더 서비스나 프로토콜과 관계없이 이벤트, 할 일, 저널 항목, 약속 있음/없음 정보와 같은 일정 및 일정 정보를 나타내고 교환하기 위한 데이터 형식을 정의했습니다.
.ics 파일을 열면 다음과 같이 표시됩니다.

BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
BEGIN:VEVENT
DTSTART:20220626T093000Z
DTEND:20220626T133000Z
DTSTAMP:20220630T174300Z
UID:[email protected]
CREATED:20220623T183246Z
LAST-MODIFIED:20220623T183254Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:MEETUP
END:VEVENT
END:VCALENDAR


첫인상에서 이것은 BEGIN 및 END 단어가 있는 마크업 언어처럼 보입니다. 트리 형식으로 살펴보겠습니다.

vcalendar
  - vevent
    - dtstart- 2022-06-26T09:30:00Z
    - dtend- 2022-06-26T13:30:00Z
    - dtstamp- 2022-06-30T17:43:00Z
    - uid- [email protected]
    - created- 2022-06-23T18:32:46Z
    - last-modified- 2022-06-23T18:32:54Z
    - sequence- 0
    - status- CONFIRMED
    - summary- MEETUP
  - prodid -//Google Inc//Google Calendar 70.9054//EN
  - version - 2.0


HTML이 Document Object 모델로 구성되는 것과 마찬가지로 ics는 일정 및 일정 정보의 모음인 Core Object에 구축됩니다. 개체는 일련의 달력 속성과 하나 이상의 달력 구성 요소로 구성됩니다.

iCalendar 개체



우리가 본 위의 예는 iCalendar 개체의 가장 기본적인 표현입니다. iCalendar 개체의 첫 번째 줄과 마지막 줄에는 iCalendar 개체 구분 기호 문자열 쌍(이 경우 BEGIN & END)이 포함되어야 합니다.

캘린더 구성 요소 및 속성



iCalendar 개체의 본문은 일련의 일정 속성과 하나 이상의 일정 구성 요소로 구성됩니다.

여기서 DTSTARTDTEND는 달력 구성 요소 시작/종료를 지정하는 속성입니다.

BEGIN:VCALENDAR
...
DTSTART:20220626T093000Z
DTEND:20220626T133000Z
...
END:VCALENDAR


ics 파일에서 VEVENT 이벤트를 설명하는 구성 요소 속성 그룹을 제공하는 것을 알아차렸을 것입니다Calendar component.

이제 이벤트를 만들어 Google 캘린더에 추가해 보겠습니다. 시작하려면 VERSION 속성이 2.0(최신)으로 설정된 iCalendar 객체를 생성해 보겠습니다.

BEGIN:VCALENDAR
VERSION:2.0
END:VCALENDAR


이제 Event Component를 정의하여 새 이벤트를 추가해 보겠습니다. VEVENT로 시작/끝납니다. 필수 속성인 UID를 추가합니다. 모든 이벤트에는 DTSTARTDTEND 를 사용할 이벤트에서 이를 정의하는 시작/종료 시간이 있습니다.

현지 시간으로 날짜를 사용합니다. 예를 들어 다음은 1998년 1월 18일 오후 11시를 나타냅니다. 19980118T230000.

RFC 문서에서 time formats에 대해 자세히 읽을 수 있습니다.

BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
UID:[email protected]
DTSTART:20220701T090000
DTEND:20220701T100000
END:VEVENT
END:VCALENDAR


이제 이벤트가 준비되었으므로 위치, 요약과 같은 몇 가지 메타 속성을 추가합니다.

BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
UID:[email protected]
DTSTART:20220701T090000
DTEND:20220701T100000
SUMMARY:Test Event
DESCRIPTION:This is test event for my blog
LOCATION:https://dpnkr.in
END:VEVENT
END:VCALENDAR


이제 이것이 준비되었으므로 Google 캘린더에서 가져오도록 하겠습니다. 설정 -> 가져오기 및 내보내기 -> 파일 업로드에서 수행할 수 있습니다. 파일을 업로드하면 ics 파일에서 생성된 이벤트가 표시됩니다.



이것이 ics 파일에 대한 개요를 제공하기를 바랍니다. 어떻게 recurring events are created , to-do component 와 같은 많은 것들이 있습니다. 관심이 있으시면 자세히 읽어 보시기 바랍니다.

A quick favor: was anything I wrote incorrectly or misspelled, or do you still have questions? Feel free to message me on .



그때까지 감사합니다. 좋은 하루 되세요.

더 읽어보기:


  • RFC 445
  • iCalendar Viewer
  • 좋은 웹페이지 즐겨찾기