Как создать ics файл

Обновлено: 06.07.2024

Не так давно у меня возникла необходимость парсинга и последующего вывода нужной информации из iCalendar. После упорных поисков я наткнулся на библиотеку iCal4J. Присмотревшись к её функционалу, я понял — это то, что мне нужно. Давайте же попробуем её применить на практике.

Подготовка календаря

В Google Calendar я создал маленький календарь, состоящий из нескольких различных мероприятий длительностью от 30 минут до 6 часов. Затем я скачал календарь в формате iCal к себе на ноутбук. Если кто не знает — делается это так: заходим в настройки календаря Google и в разделе «Закрытый адрес календаря» жмём на зеленую кнопочку «ICAL». Всё, календарь загружен на устройство.

Подготовка Java

Следующим этапом стала загрузка библиотеки и подключение ее к проекту. Распаковал и указал среде разработки папку с файлами библиотек *.jar. Также в папку с проектом был скопирован мой скачанный файл календаря. Все готово к написанию кода!

Загрузка календаря

Существует два варианта загрузки календаря — из файла и парсинг строки с содержимым календаря. Мы выберем первый способ (второй существенно не отличается от него).

Вывод всех мероприятий

Давайте теперь попробуем вывести куда — нибудь (ну хотя бы в консоль) все мероприятия из нашего календаря.


Стоит обратить внимание на первую строчку, а именно Component.VEVENT. Так мы указываем, что хотим получить именно мероприятия календаря. Если не указать явно, что мы хотим извлечь из календаря, то мы получим список, в котором также окажутся To-Do компоненты (VTODO), заметки (VJOURNAL), и прочие компоненты типа VFREEBUSY, VALARM и VTIMEZONE.

Применение фильтров

Для того, чтобы вывести элементы, в моем случае мероприятия, в определенный период времени, можно применить фильтры.

На момент написания в моем календаре хранились такие записи (в формате «Заголовок»: «Описание» [«Время начала»]):

Event 1: Event 1 — November 1 [7 Nov 2013 13:00:00 GMT]
Event 5: Event 5 — November 12 [12 Nov 2013 12:00:00 GMT]
Event 3: Event 3 — November 10 [10 Nov 2013 19:30:00 GMT]
Event 2: Event 2 — November 9 [9 Nov 2013 08:30:00 GMT]
Event 4: Event 4 — November 11 [11 Nov 2013 08:00:00 GMT]
Event 6: Event 6 — November 13 [13 Nov 2013 09:30:00 GMT]

После применения фильтра на вывод запланированных мероприятий (на 11 ноября) я получил только одно мероприятие — Event 4:
Event 4: Event 4 — November 11 [11 Nov 2013 08:00:00 GMT]

Увеличив период до трёх дней…

… я получил такую картину:

Event 5: Event 5 — November 12 [12 Nov 2013 12:00:00 GMT]
Event 4: Event 4 — November 11 [11 Nov 2013 08:00:00 GMT]
Event 6: Event 6 — November 13 [13 Nov 2013 09:30:00 GMT]
Создание пустого календаря

iCal4j поддерживает также создание календаря с нуля. Здесь всё просто. Создаем объект календаря, добавляем в него необходимые поля.

Добавление нового мероприятия в календарь

Вот с созданием мероприятия все не так просто, но если разобраться, то все пойдет достаточно быстро.

Сохранение календаря в файл

Поработав с календарем, нам конечно же нужно его сохранить. Лучше всего сохранить обратно в файл.

Заключение

Мы рассмотрели базовые возможности библиотеки iCal4j. Конечно, её возможности не ограничиваются просто парсингом календаря и созданием событий. Библиотека позволяет также прикреплять файлы к событиям, создавать мероприятия с указанием места проведения в координатах, создавать списки приглашенных и многое другое. Помимо этого библиотека может использоваться в разработке Android приложений.

Когда рассылаешь анонс события, стараешься максимально убедить подписчиков прийти. Делаешь рассылку с анонсом за две недели, еще раз за неделю и за полчаса до начала, но половина получателей все равно не приходит.

Сегодня будем работать с явкой на ваши ивенты — разберемся, как прислать подписчику анонс, чтобы он попал в его личный календарь и напомнил о себе оттуда.

Почему стоит заморочиться и предложить подписчику добавить событие из письма в календарь? Потому что вы сами добавите в напоминание любые детали — что за событие, где проходит, кто проводит, какие будут бонусы. К тому же вы сможете выбрать, когда именно напомнить подписчику о предстоящем ивенте — за неделю, день или пару часов.

Два способа добавить мероприятие из письма в календарь

Как добавить анонс в календарь ссылкой

Большая часть календарных сервисов работает с напоминаниями по схожему принципу. Вы создаете общедоступное мероприятие, сервис генерирует ссылку на него, вы отправляете эту ссылку подписчику — в письме, чат-боте или любым другим способом. При нажатии на ссылку подписчик переходит в свой аккаунт в этом сервисе, на страницу настройки события — здесь ему нужно лишь подредактировать напоминание.

Давайте сразу посмотрим, как это выглядит для пользователей. Нашла у себя письмо от сервиса TimePad — это площадка для продажи билетов на мероприятия. После бронирования билетов на концерт сервис прислал письмо на email с функцией добавить событие в личный Google Календарь:

Из письма можно сразу добавить мероприятие в свой календарь

Плюсы:

Минусы:

  • Одна ссылка содержит только одно мероприятие.
  • Не все календари умеют генерировать ссылки на мероприятия.
  • Под каждый сервис-календарь нужна своя ссылка.

Как добавить анонс в календарь файлом ics

Ics — это тип файлов, которые хранят календарные данные. Чтобы использовать этот файл, нужно импортировать его содержимое в свою программу-календарь — все события, записанные в файле, перезапишутся в календарь.

Ics вам понадобится, если нельзя передать мероприятие в виде ссылки. Например, если подписчик использует не онлайн-календарь, а программу на компьютере или приложение на телефоне.

Покажу, как добавить напоминание в приложение-календарь iCalendar на компьютере с MacOS. Пользователю достаточно скачать и открыть файл:

Как ics-файл открывается на компьютере под MacOS

Примерно так же все происходит и на телефоне. Достаточно скачать файл и открыть его, устройство само предложит подходящие приложения:

Как ics-файл открывается на телефоне под Android

На некоторых устройствах файлы даже открываются автоматически, это зависит от пользовательских настроек самого устройства.

Плюсы:

  • ics-файл будет работать во всех сервисах и приложениях.
  • Файл может содержать много событий, они загрузятся одновременно.

Минусы:

  • Не все пользователи доверяют скачанным из интернета файлам.

Как создать напоминание со ссылкой

Дальше я покажу на примере Google Календаря, как создать общедоступное мероприятие и ссылку на него для подписчиков.

Выбираем дату и кликаем на нужный временной интервал. Точность не нужна, вы можете позже отрегулировать любые настройки. В открывшемся окне набираем название, либо сразу переходим в «Другие параметры». Здесь самое главное — установить в настройках приватности вариант «Общедоступное», чтобы была возможность поделиться мероприятием. Жмем кнопку «Сохранить» вверху.

Чтобы мероприятием можно было поделиться, сделайте его общедоступным

Создавайте напоминание так, как вы хотите представить его подписчикам — все ваши настройки сохранятся при передаче ссылки или ics файла, включая описание события и интервалы напоминаний.

После этого кликаем на созданное мероприятие, во всплывшем окне жмем на три точки и выбираем опцию «Опубликовать мероприятие». Здесь календарь предложит вам две опции на выбор — кусочек HTML кода или ссылку. Копируйте ссылку и сохраните ее себе куда-нибудь.

Ссылка на мероприятие в Google Календаре лежит в разделе «Опубликовать мероприятие»

Дальше в статье я покажу, как вставить эту ссылку в письмо.

Как создать напоминание с файлом формата ics

Теперь создадим ics-файл. Я выбрала два способа: с помощью Google Календаря — одного из самых популярных календарных сервисов, и c помощью бесплатного сервиса Event Generator от Emailmatrix, которым очень просто воспользоваться любому желающему.

Создаем ics-файл из Google Календаря. Для начала создайте и настройте свое мероприятие. Желательно создавать его в отдельном календаре — вы будете скачивать именно календарь со всем содержимым, а не только отдельное мероприятие.

Теперь на панели слева найдите нужный календарь. Нажмите на три точки справа от названия. В открывшемся меню выберите пункт «Настройки и общий доступ», а на следующем шаге нажмите кнопку «Экспортировать календарь». На ваш компьютер скачается zip-архив, в котором и будет нужный нам ics.

Экспорт ics файла из Google Календаря

Обратите внимание, что календарь необязательно делать общедоступным, ведь вы не делитесь доступом к календарю онлайн, а сразу передаете подписчику копию данных.

В прочих онлайн-календарях процесс будет аналогичным — создать новый календарь с нужным мероприятием и скачать его. Нужно только найти соответствующие пункты в настройках.

Создаем ics-файл в сервисе Event Generator. Перейдите на страницу сервиса и заполните все графы. Их здесь немного — время начала и окончания, часовой пояс, заголовок и описание мероприятия, по желанию ссылка на сайт и адрес проведения. Нажмите «Создать событие», и сервис отдаст вам два готовых варианта. Первый, нужный нам — ics-файл, который можно либо скачать, либо взять ссылку его скачивание. Второй вариант — ссылка на событие в Google Календаре.

Создание ics-файла и ссылки на Google Календарь в сервисе Event Generator

Как вставить мероприятие из календаря в письмо

Сейчас я на примере конструктора рассылок SendPulse покажу, как тремя разными способами добавить напоминание из календаря в письмо.

Обратите внимание! Если собираетесь использовать ics-файл, загрузите его в какое-то облачное хранилище, например, Google Диск. Лучше выдавать ссылку на скачивание, чем прикреплять файл к письму — почтовые системы не очень хорошо относятся к письмам с вложениями.

Потренироваться работе с календарем можно на наших готовых шаблонах. Для это зайдите в аккаунт, выберите на панели слева раздел «Шаблоны», нажмите на любой понравившийся и кликните «Редактировать». Вы попадете в конструктор рассылок SendPulse и сможете начать работу над выбранным шаблоном.

Потренироваться можно на готовом шаблоне, они находятся в аккаунте в разделе «Шаблоны»

Ссылка в тексте

Самый простой способ добавить мероприятие из календаря в письмо — вставить гиперссылку в текст. Не нужно ставить «голые» ссылки в текст: они бывают огромными, выглядят неаккуратно и портят впечатление от письма.

Я сделаю гиперссылку. Для этого добавлю в письмо блок текста с приглашением добавить мероприятие в свой календарь. Для примера использую ссылки на Google Календарь и скачивание ics-файла, которые получила при создании события в сервисе Event Generator.

Добавление ссылки на календарь в письмо в виде гиперссылки

Обратите внимание! В каком виде добавлять напоминание в письмо — это ваше решение. Отталкивайтесь от того, на каких устройствах аудитория читает ваши рассылки. Вы можете либо вести подписчиков на онлайн-календари, либо выдать ссылку на скачивание ics-файла, либо скомбинировать эти способы.

Ссылка на кнопке

Можно повесить ссылки на кнопки, этот вариант займет побольше времени. Процесс будет аналогичным, только вместо текста нужно будет создать в письме ряд кнопок.

Чтобы поставить несколько элементов в горизонтальный ряд, нам понадобится опция «Добавить структуру», она находится сверху в левой панели. Кликайте на нее и выбирайте нужную структуру.

После этого перетаскивайте в каждое окошко структуры нужные элементы, в нашем случае это кнопки. Учтите, что в SendPulse максимальное количество элементов в ряду — четыре (я для примера сделаю структуру с двумя кнопками). Напишем для кнопок названия и добавим ссылки.

Элемент «Структура» в конструкторе SendPulse понадобится, чтобы добавить несколько кнопок в ряд

После этого можно настроить внешний вид кнопок — цвет, размер, форму.

Кнопки настраиваются — текст, ссылки и внешний вид

Иконки

Покажу, как применить его в конструкторе SendPulse. Зайдите в нужный вам шаблон. Код мы будем вставлять в текстовый блок, поэтому перетащите на рабочую область новый элемент «Текст». Теперь, если щелкнете на этот элемент, увидите всплывающее окно с опциями форматирования. Раскройте это окно щелчком на стрелку в правом углу и выберите значок исходного кода “<>”. В открывшемся окне вставьте подготовленный код и нажмите «Ок». Готово!

Вставить иконки календарей в письмо можно через опцию «Исходный код»

Добавляем событие из календаря в письмо: что стоит запомнить

Подписчик может перенести готовое напоминание о событии из письма к себе в календарь в пару кликов. Так и ему меньше хлопот, и для вас чуть выше шанс, что он не забудет про ивент.

Есть два способа, как добавить напоминание о мероприятии из календаря в письмо:

  1. Создать событие в онлайн-календаре и отдать подписчикам ссылку. Это несложно, но вам придется создать мероприятия во всех популярных онлайн-календарях — нельзя в «Яндекс.Календарь» добавить мероприятие из Google Календаря.
  2. Создать событие в календаре и скачать его в виде ics-файла. Это надежно — с такими файлами работают практически все календарные онлайн-сервисы, программы и приложения. Но это не совсем удобно для подписчиков — не все знают, что это за формат и как его загрузить в свой календарь.

Можете скомбинировать способы — добавить в письмо и ссылки, и ics-файл. Красиво вставить готовый результат в письмо можно тремя способами:

  • Повесить ссылки на текст.
  • Добавить ссылки на кнопки.
  • Создать иконки со ссылками в HTML-разметке письма.

На следующий ивент обязательно попробуйте добавить напоминание из календаря в письмо и смотрите, как это повлияет на количество участников. C конструктором SendPulse эта работа не займет много времени.

Здесь я буду писать всякие интересные штуки из моей жизни и работы


У нас на корпоративном портале есть календарь:

Он работает с MySQL, таблица представляет из себя:

Наиболее распространенным форматом является iCalendar(.ics), его и будем использовать. Как это не смешно, но самое адекватное описание формата можно получить на википедии, а также экспортировав календарь из того же google(или microsoft outlook) и открыв блокнотом.

Для начала отобьём все запросы вне сессии(хотя секретной информации нет, но пусть будет небольшая безопасность):

Следующим шагом подключимся к БД:

Отберем последние 100 записей инвентаризации(т.к. торговых объектов

60, то больше нам не нужно) в массив $arraydb:

Т.к. сотрудники у нас в отдельной таблице:

Соответственно нам понадобится выборка сотрудников, вытянем ее в массив $arraysotr:

Т.к. нам еще пригодится адрес и время работы, а они в другой базе , то подключемся к ней, вытянем данные в массив $arrayadr, и закроем соединение:

Т.к. генерация файла будет осуществляться сразу в скрипте, то добавим хидеры для выгрузки файла в браузер:

В качестве отладки можно выводить текст генерируемого календаря в браузер, для чего закомментируем хидеры выше и добавим новый:

Соответственно, чтобы выгрузить файл, закомментируем этот и раскомментируем предыдущие. Далее выведем текст, который меняться не будет(заголовок календаря):

Далее в цикле создадим ивенты:

Далее закроем календарь:

В качестве отладки, открываем блокнотом(я использую notepad++) сгенерированный календарь и проверяем его соответствия с тем, который экспортировали из google(у меня, например, были проблемы с переносами строк). Проверяем его импорт в гугл и microsoft outlook.

Ну и для самой выгрузки нам нужно просто сделать ссылку на соответствующий скрипт.

Для многих деловых людей календари на основе программного обеспечения являются важным организационным инструментом. Когда участники регистрируются на мероприятие, они хотят отслеживать не только дату события, но какие сеансы они планируют посетить.

Как создать индивидуальный файл iCalendar

Чтобы создать кнопку Добавить в календарь:

Перейдите на вкладку Свойства. Выберите Добавить в календарь в раскрывающемся меню Ссылка на.

Снимок экрана параметра добавления в календарь в свойствах кнопки.

Выберите информацию, которую вы хотите включить в файл iCalendar, используя раскрывающийся список Что следует добавить в календарь. Доступны следующие параметры:

  • Только событие: файл iCalendar будет содержать только событие, для которого зарегистрировался контакт.
  • Только сеансы: файл iCalendar будет содержать только сеансы событий, для которых зарегистрировался контакт.
  • События и связанные сеансы: файл будет содержать информацию о событии и сеансах, для которых зарегистрировался контакт.

Выберите событие, с которым следует связаться.

Введите Текст кнопки, который отображается на кнопке. Вы можете настроить стиль кнопки в разделе Стиль.

Когда вы отправляете электронное письмо с кнопкой Добавить в календарь, контакты, которые зарегистрировались для события, получат персонализированную ссылку для загрузки своей повестки дня в качестве файла iCalendar.

Настройка описаний файлов iCalendar

Каждое событие или сеанс в файле iCalendar содержит настраиваемое описание. Для настройки содержимого описания:

Перейдите в рабочую область Планирование событий и выберите событие, которое вы хотите настроить.

В событии перейдите на вкладку Дополнительные сведения.

Чтобы отредактировать информацию iCalendar, перейдите в раздел Содержимое календаря. Левый раздел содержимого позволяет редактировать содержимое для календарей, поддерживающих описания HTML, такие как Outlook. Правый раздел содержимого позволяет редактировать содержимое для календарей, которые поддерживают только текстовые описания, такие как Gmail и Apple Calendar. В зависимости от того, в какой календарь импортируется файл iCalendar, будет использоваться только HTML или текст.

Снимок экрана редактирования содержимого календаря.

Отметки о прибытии транслируемого события

Для транслируемых событий кнопка отметки о прибытии автоматически добавляется в описание файла iCalendar, если содержимое календаря пусто. Вы можете удалить кнопку отметки о прибытии или добавить новую кнопку со ссылкой, настроенной на следующий подстановочный знак: > . Подстановочный знак преобразуется в персонализированную ссылку на транслируемое событие, когда контакт загружает файл iCalendar.


Файл .ics – универсальный формат календарей. Он используется в таких сервисах, как Mozilla Sunbird, Google Calendar, Microsoft Outlook, Apple iCal. Формат .ics позволяет пользователям публиковать и обмениваться данными календаря онлайн и рассылать по email. Другие пользователи могут подписаться на опубликованные календари и добавлять события в свои календари.

Как поделиться календарем?

Рассмотрим на примере Google Календаря. Экспортировать календари можно только из раздела «Мои календари» в левой части Google Календаря. Для экспорта чужого календаря у вас также должно быть право «Вносить изменения + предоставлять доступ». Как предоставить доступ к календарю, читайте здесь.

Экспорт мероприятий из всех календарей

1. Откройте Google Календарь на компьютере. В мобильном приложении эта функция недоступна.

2. В правом верхнем углу нажмите на значок шестеренки, далее «Настройки».

Вид личного календаря. Скриншот

Вид личного календаря. Скриншот.

3. Чтобы скачать мероприятия, нажмите «Импорт и экспорт».

4. В разделе «Экспорт» нажмите Экспорт. На вашем компьютере будет сохранен архив ZIP. Он будет содержать данные каждого из ваших календарей в виде отдельных файлов ICS.

Импорт и экспорт календаря. Скриншот Экспортированные календари. Скриншот

Файл .ics в почте. Скриншот

Файл .ics в почте. Скриншот.

Чтобы экспортировать мероприятия из одного календаря, перейдите сначала в раздел «Мои календари», затем в «Настройках календаря», нажмите «Экспортировать календарь». Начнется скачивание ics -файла с вашими мероприятиями. Обратите внимание: функция экспорта может быть отключена в целях безопасности в организации или учебном заведении.

Как можно открыть файл .ics через Outlook. Скриншот

Как можно открыть файл .ics через Outlook. Скриншот.

Чем открыть файл .ics

  • В Windows: Microsoft Outlook, Mozilla Sunbird, Microsoft Works, IBM Lotus Notes, eM Client, Novell GroupWise, Mozilla Thunderbird с плагином Lightning, SeaMonkey с плагином Lightning, ABC Amber iCalendar Converter
  • В Mac OS: Apple iCal, Mozilla Sunbird, IBM Lotus Notes, Novell GroupWise, Mozilla Thunderbird с плагином Lightning, SeaMonkey с плагином Lightning
  • В Linux: Mozilla Sunbird, Horde Kronolith, Claws Mail с плагином vCalendar, IBM Lotus Notes, Evolution, Novell GroupWise, Mozilla Thunderbird с плагином Lightning, SeaMonkey с плагином Lightning
  • Вэб-сервис: Google Calendar, Yahoo! Calendar

Кроме того, ABC Amber iCalendar позволит сохранить все запланированные события в одном файле и сконвертировать файлы .ics в другие форматы документов: PDF, HTML, CHM, RTF, HLP, TXT, DOC, MDB, XLS. Быстро сконвертировать файл .ics также можно при помощи такой web-утилиты, как ICS File Converter.

Читайте также: