Как создать ссылку для добавления записи в календарь?

Я работаю в этом ночном клубе и в настоящее время делаю для них веб-сайт, у них много мероприятий, и их сайт во многом построен на мероприятиях, сегодня они делают событие в facebook для каждого мероприятия, но было бы убийственно иметь " Добавить в мой календарь », которая добавила его в ваш iCal или Google Calendar (или, может быть, даже в Outlook).

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

Кроме того, пока я говорю об этом, знает ли кто-нибудь, можно ли автоматически импортировать событие из Facebook в WordPress или экспортировать событие из WordPress в Facebook, что было бы здорово, но это не так важно.


person Hultner    schedule 29.04.2011    source источник
comment
Связано: stackoverflow.com/questions / 22757908 /   -  person Denilson Sá Maia    schedule 27.04.2016


Ответы (6)


ОБНОВЛЕНИЕ (бесплатно для личного использования):
ТЕПЕРЬ ПОДДЕРЖИВАЕТСЯ HTTPS.

В то время как мой ответ ниже, в котором подробно описаны инструкции для каждой службы, БУДЕТ работать, IMO теперь намного проще использовать стороннюю организацию, такую ​​как http://addthisevent.com. Он позволяет настраивать множество параметров, а также добавлять в Facebook и многое другое. К сожалению, теперь они сделали эту услугу платной для чего-либо, кроме личного использования, и добиваются этого.

Я предполагаю, что есть и другие сторонние решения, подобные этому, но я могу говорить только с этим, и до сих пор оно отлично работало для нас.


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

Для Outlook это немного сложнее, но в основном вам нужно создать .vcs файл с данными события и просто сделать ссылку на этот файл. Шаг- пошаговые инструкции здесь.

Для ссылки iCal вы можете использовать класс PHP , например этот, или подпишитесь на инструкции на этой странице о том, как создать ics файл (файл iCal).

person Dave    schedule 29.04.2011
comment
Спасибо, что плохо, что для этого не существует универсального стандарта, как в случае с mailto: для электронной почты. - person Hultner; 29.04.2011
comment
Похоже, что на странице Руководства для издателей мероприятий Google больше нет такой формы для генерации URL (к сожалению, в документации Google есть постоянные изменения), но формат URL @ squarecandy по-прежнему работает нормально (по крайней мере, для Календаря Google)! - person chbrown; 02.12.2014
comment
Ну, их собственная форма даже не генерировала ссылки, которые работали, поэтому, вероятно, они ее и удалили. :) - person squarecandy; 20.04.2015

Ссылки в посте Дэйва отличные. Просто чтобы добавить несколько технических подробностей о ссылках Google в ответ здесь, на SO:

Ссылка на Календарь Google

<a href="http://www.google.com/calendar/event?action=TEMPLATE&text=Example%20Event&dates=20131124T010000Z/20131124T020000Z&details=Event%20Details%20Here&location=123%20Main%20St%2C%20Example%2C%20NY">Add to gCal</a>

параметры:

  • action = TEMPLATE (обязательно)
  • текст (название мероприятия в кодировке url)
  • dates (ISO date format, startdate/enddate - must have both start and end time - the button generator will let you leave the endtime blank, but you must have one or it won't work.)
    • to use the user's timezone: 20131208T160000/20131208T180000
    • чтобы использовать глобальное время, конвертируйте в UTC, затем используйте 20131208T160000Z / 20131208T180000Z
    • события дня, вы можете использовать 20131208/20131209 - обратите внимание, что генератор кнопок ошибается. Вы должны использовать следующую дату в качестве даты окончания для однодневного мероприятия на весь день или +1 день к любой дате окончания, которую вы хотите.
  • подробности (описание / детали события в кодировке url)
  • местоположение (местоположение события в кодировке URL-адреса - убедитесь, что это адрес, который можно легко прочитать на картах Google)

Обновление, февраль 2018:

Вот новая структура ссылок, которая, похоже, поддерживает новую версию календаря Google без необходимости взаимодействия с API:

https://calendar.google.com/calendar/r/eventedit?text=My+Custom+Event&dates=20180512T230000Z/20180513T030000Z&details=For+details,+link+here:+https://example.com/tickets-43251101208&location=Garage+Boston+-+20+Linden+Street+-+Allston,+MA+02134

Новый базовый URL: https://calendar.google.com/calendar/r/eventedit

Новые параметры:

  • текст (название мероприятия)
  • dates (ISO date format, startdate/enddate - must have both start and end time)
    • an event w/ start/end times: 20131208T160000/20131208T180000
    • мероприятия на весь день, вы можете использовать 20131208/20131209 - дата окончания должна быть +1 день к любой желаемой дате окончания.
  • ctz (часовой пояс, например America / New_York - оставьте поле пустым, чтобы использовать часовой пояс пользователя по умолчанию. Настоятельно рекомендуется включайте это почти во всех ситуациях. Например, напоминание для видеоконференции: если бы три человека в разных часовых поясах щелкнули по этой ссылке и установили напоминание на «свой» вторник в 10:00 утра, это не сработает.)
  • подробности (описание / детали события в кодировке url)
  • местоположение (местоположение события в кодировке URL-адреса - убедитесь, что это адрес, который можно легко прочитать на картах Google)
  • добавить (список писем, разделенных запятыми - добавляет гостей на ваше новое мероприятие)

Примечания:

  • старая структура URL-адресов, указанная выше, теперь перенаправляется сюда
  • поддерживает https
  • сделки с часовыми поясами лучше
  • принимает + в качестве места в дополнение к %20 (urlencode против rawurlencode в php - оба работают)
person squarecandy    schedule 08.11.2013
comment
Если кому-то интересно, я создал функцию php, которая построит этот тип ссылки календаря Google: gist.github. ru / squarecandy / 26611bbcfc63f9c7e3a7dc45e9145133 - person squarecandy; 28.01.2017
comment
Также стоит отметить, что часовой пояс для меня не устанавливается, если я не укажу как даты часового пояса, так и параметр ctz. Дополнительная информация здесь: zaclee.net/php/ - person Zachary Schuessler; 18.08.2017
comment
@squarecandy есть идеи, как заставить это установить сразу несколько дат? Например, если у вас есть диапазон вроде вторника по четверг, но вы хотите отобразить его в календаре как 3 отдельных события? - person garek007; 07.11.2018
comment
@ garek007 Я не думаю, что это возможно. Это должно быть 3 разных события. Если есть задача, которую вы не можете выполнить в онлайн-версии экрана добавления событий в календаре Google, вы не можете использовать эту технику для этого. Вероятно, вы могли бы понять, как добавить 3 события одновременно с помощью Google Calendar API, но это просто ссылка на событие добавления для одного события. - person squarecandy; 08.11.2018
comment
@squarecandy Я тоже хочу обновить органайзер, есть ли способ, с помощью которого я могу добавить данные организатора в эту ссылку создания мероприятия? - person Nikunj Undhad; 04.02.2019
comment
@ nikunj-undhad - этот метод создает очень простую ссылку для пользователя, чтобы создать собственное новое событие в версии веб-приложения календаря Google. Я не думаю, что есть поле органайзера, которое можно определить на новом экране календаря calendar.google .com / calendar / r / eventedit - если вы хотите создать новое событие, определите владельца / создателя этого события как кого-то, кроме текущего веб-пользователя, и пригласите других на это событие, вам нужно будет использовать больше сложный метод подключения API. - person squarecandy; 04.02.2019
comment
[email protected] позволит вам выбрать конкретную учетную запись Gmail. Полезно, если вы вошли в несколько учетных записей Gmail в браузере и хотите добавить событие календаря в конкретную учетную запись. - person Abdulgood89; 17.05.2019
comment
Если кому-то интересно добавить напоминание через URL-ссылку для Календаря Google, это невозможно. Этот параметр находится в настройках calendar.google.com - ›Настройки -› Выберите желаемый Календарь слева - ›Уведомления о событиях. Каждое событие Календаря Google, впоследствии созданное для этого Календаря, будет иметь одинаковые настройки уведомлений. - person Abdulgood89; 19.05.2019
comment
было бы лучше, если бы мы также могли указать параметры напоминания - person exexzian; 21.06.2019
comment

Чтобы добавить к вкладу календаря Squarecandy в Google, вот новый

Формат OUTLOOK CALENDAR (без необходимости создавать .ics) !!

<a href="https://bay02.calendar.live.com/calendar/calendar.aspx?rru=addevent&dtstart=20151119T140000Z&dtend=20151119T160000Z&summary=Summary+of+the+event&location=Location+of+the+event&description=example+text.&allday=false&uid=">add to Outlook calendar</a>

протестировать

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

Ради познания,

Формат YAHOO CALENDAR

<a href="https://calendar.yahoo.com/?v=60&view=d&type=20&title=Summary+of+the+event&st=20151119T090000&et=20151119T110000&desc=example+text.%0A%0AThis+is+the+text+entered+in+the+event+description+field.&in_loc=Location+of+the+event&uid=">add to Yahoo calendar</a>

протестировать

Использование этой функции без участия третьих лиц дает множество преимуществ, например, ее использование в электронных письмах.

person Email    schedule 05.11.2015
comment
Похоже, ссылка на Outlook больше не работает. Он добавляет местоположение и вызывает форму нового события, но не заполняет никаких других полей. - person Steve; 02.12.2015
comment
Чтобы расширить комментарий @Steve, ссылка Outlook даже больше не разрешается на сервер - я получаю ошибку разрешения DNS. - person Owen Blacker; 01.02.2018
comment
Извините, этот ответ необходимо обновить, чтобы он был действительным и был отклонен. - person webaholik; 10.08.2019

Вот служба Добавить в календарь, предназначенная для добавления мероприятия в

  1. Календарь Apple
  2. Календарь Google
  3. Перспективы
  4. Outlook Online
  5. Yahoo! Календарь

Кнопка «Добавить в календарь» для событий на веб-сайтах и ​​в календарях проста в установке, не зависит от языка, часового пояса и летнего времени. Он отлично работает во всех современных браузерах, планшетах и ​​мобильных устройствах, а также с Apple Calendar, Google Calendar, Outlook, Outlook.com и Yahoo Calendar.

<div title="Add to Calendar" class="addeventatc">
    Add to Calendar
    <span class="start">03/01/2018 08:00 AM</span>
    <span class="end">03/01/2018 10:00 AM</span>
    <span class="timezone">America/Los_Angeles</span>
    <span class="title">Summary of the event</span>
    <span class="description">Description of the event</span>
    <span class="location">Location of the event</span>
</div>

введите здесь описание изображения

person jGupta    schedule 31.12.2015
comment
Абсолютно здорово. Очень похоже на addevent.com, но, думаю, еще больше вариантов стиля, и он лицензирован MIT! Поэтому это определенно мой выбор. Спасибо за ссылку. - person Arvid; 24.07.2016
comment
Теперь он объединен с addevent.com - person Separatrix; 10.11.2017

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

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

https://www.litmus.com/blog/how-to-create-an-add-to-calendar-link-for-your-emails/

person John Rix    schedule 13.05.2021

Вы можете попросить программу создать версию календаря .ics (iCal), а затем импортировать этот .ics в любую программу-календарь, которая вам нужна: Google, Outlook и т. Д.

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

person fishcx    schedule 25.07.2012
comment
Я был бы очень признателен за пример этого кода, если вы можете, пытаясь сделать именно это с Outlook, Gmail и iCal. - person KidCache; 15.05.2013