В настоящее время я просматриваю возможность отображения списков событий из нескольких Google Календари на веб-странице. На данный момент я использую плагин Google Calendar Events для WordPress для отображения событий на сайте (сайт разработки за брандмауэром, поэтому я не могу поделиться ссылкой); но я хотел бы посмотреть, есть ли какой-либо простой способ динамически генерировать файлы ICS для каждого отдельного события.
Мы хотели бы, чтобы посетители веб-сайта добавляли отдельные события в свои календари, но API данных календаря Google, похоже, предоставляет возможность загрузки всего календаря в формате ICS. Я попробовал просто добавить строку запроса с идентификатором eid (идентификатор события) до конца адреса канала ICAL, но он все еще открывает стандартный канал ICAL Google, который включает все события, которые в настоящее время включены в календарь.
Я немного знаком с динамическим построением ICS-файлов с нуля и делал это один раз в прошлом, вытягивая события из локальной программы календаря Perl и генерируя ICS-файл для каждого события; но если есть готовые API-интерфейсы или классы PHP, которые уже настроены для создания файлов ICS из отдельных событий Календаря Google, я бы предпочел использовать их.
Просто так просто на странице, попробуйте это: (вам, конечно, нужно подставить свои собственные переменные …)
<?php /* * generates calendar ics file */ if( empty($_GET['summary']) || empty($_GET['dtstart']) || empty($_GET['dtend']) ){ header ("Location: /diary/this-week") ; exit(); } header("Content-type: text/calendar"); header("Content-Disposition: attachment; filename=".urlencode($_GET['summary']).'-'.time().".ics"); header("Pragma: no-cache"); header("Expires: 0"); echo 'BEGIN:VCALENDAR VERSION:2.0 PRODID:councilsites METHOD:PUBLISH BEGIN:VEVENT URL:'. htmlentities( $_GET['url'] ) .' UID:'. htmlentities( $_GET['url'] ) .' SUMMARY:'. htmlentities( $_GET['summary'] ) .' DTSTAMP:'. date('Ymd\THis\Z') .' DTSTART:'. htmlentities( $_GET['dtstart'] ) .' DTEND:'. htmlentities( $_GET['dtend'] ) .' LOCATION:'. htmlentities( $_GET['location'] ) .' END:VEVENT END:VCALENDAR'; ?>
Некоторые библиотеки PHP, которые я смог выкопать через google, все для PHP, я уверен, что есть еще больше:
Я также хотел создать файл .ics для одного события. Я не хотел связываться с PHP, поэтому я собирался использовать подсказку грималы. К сожалению, я не знал calendarID для события, которое я хотел экспортировать, поэтому я экспортировал все календари gcal и отредактировал результирующий файл, чтобы он содержал только заголовок календаря, footing и vevent lsiting. Я также удалил название календаря, которое я не знаю, если это необходимо. Я никогда не узнал способ получить URL-адрес для конкретного календаря, как предложил гимнастика, но я нашел это на основе этого текста справки .
В списке календарей в левой части страницы наведите указатель мыши на календарь, из которого вы хотите экспортировать.
Рядом с именем календаря появится стрелка раскрывающегося списка. Нажмите стрелку раскрывающегося списка и выберите Настройки календаря. (В качестве альтернативы щелкните стрелку раскрывающегося списка рядом с Мои календари и выберите «Настройки», затем выберите соответствующий календарь из списка.)
Нажмите кнопку ICAL в разделе «Частный адрес» в нижней части страницы и щелкните отображаемый URL-адрес.
Сохраните экспортированный файл в нужную папку на вашем компьютере. , возможно, вставив этот URL в другое окно браузера, скопировав текст окна и вставив его в редактор.