如何创建用于向日历添加条目的链接?

问题描述 投票:55回答:7

我正在为这家夜总会工作,目前正在为他们建立一个网站,他们有很多活动,他们的网站围绕各种活动建立了很多,今天他们为每个活动制作了一个facebook活动,但是拥有一个“添加到我的日历“按钮,将其添加到您的iCal或Google日历(甚至可能是Outlook)。

我已经设法弄清楚如何制作日历源,但随后它将被添加为新的日历,唯一的好处是人们可以“订阅事件”但是每个事件都有一个日历是非常混乱的。所以我想知道如何实现一个功能,让他们轻松地将它添加到他们的主日历。想想像mailto:链接,但是如果可能的话,可以用于日历。

此外,如果有人知道是否有可能自动将Facebook中的事件导入WordPress或将事件从WordPress导出到Facebook,那将是很好的,但这并不是那么重要。

html web calendar google-calendar-api icalendar
7个回答
47
投票

更新(免费供个人使用): HTTPS现在已经支持了

虽然我在下面详细说明了每项服务的方法,但IMO现在更容易与像AddThisEvent [https://addthisevent.com]这样的第三方合作。它允许您自定义许多选项以及添加到Facebook等。不幸的是,他们现在已经将其作为个人使用以外的任何其他服务而付费服务,并强制执行此操作。

我假设还有其他类似的第三方解决方案,但我只能说这个,到目前为止它对我们有用。


对于“添加到我的Google日历”,他们曾经使用过您可以使用的代码生成器表单,但此后又将其删除了。有关Google日历链接的更多详细信息,请参阅squarecandy's answer below

对于Outlook来说,这是一个更复杂的BIT,但基本上你需要用事件的数据创建一个.vcs文件,并只需要链接到该文件。 Step-by-step instructions here

对于iCal链接,您可以使用PHP类like this one,或关注如何创建this page's instructions文件(iCal文件)的ics


74
投票

戴夫的帖子中的链接很棒。只是将关于谷歌链接的一些技术细节放到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(必填)
  • text(url编码的事件名称)
  • 日期(ISO日期格式,开始日期/结束日期 - 必须同时具有开始和结束时间 - 按钮生成器将允许您将结束时间留空,但您必须有一个或它不起作用。) 使用用户的时区:20131208T160000 / 20131208T180000 使用全球时间,转换为UTC,然后使用20131208T160000Z / 20131208T180000Z 全天活动,您可以使用20131208/20131209 - 请注意按钮生成器出错了。您必须使用以下日期作为一天全天活动的结束日期,或者您希望结束日期为+1天。
  • 详细信息(网址编码事件描述/详细信息)
  • location(url编码事件的位置 - 确保它是一个地址谷歌地图可以轻松阅读)

2018年2月更新:

这是一个新的链接结构,似乎支持谷歌日历的新谷歌版本,无需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

新的基本网址:https://calendar.google.com/calendar/r/eventedit

新参数:

  • 文字(活动名称)
  • 日期(ISO日期格式,startdate / enddate - 必须同时包含开始和结束时间) 具有开始/结束时间的事件:20131208T160000 / 20131208T180000 全天活动,您可以使用20131208/20131209 - 结束日期必须是+1天,无论您希望结束日期是什么。
  • ctz(timezone,例如America / New_York - 留空以使用用户的默认时区。强烈建议在几乎所有情况下都包括此内容。例如,提醒视频会议:如果不同时区的三个人点击此链接并设置了星期二上午10点提醒他们“自己”,这不会很好。)
  • 详细信息(网址编码事件描述/详细信息)
  • location(url编码事件的位置 - 确保它是一个地址谷歌地图可以轻松阅读)
  • 添加(以逗号分隔的电子邮件列表 - 将来宾添加到您的新活动中)

笔记:

  • 上面的旧网址结构现在重定向到这里
  • 支持https
  • 更好地处理/时区
  • 接受qazxsw poi的空间除了qazxsw poi(qazxsw poi vs + in php - 都工作)

10
投票

要添加到squarecandy的谷歌日历贡献,这里是全新的

OUTLOOK CALENDAR格式(无需创建.ics)!!

%20

urlencode

最好的方法是对摘要,位置和描述变量的值进行url_encode。

为了知识,

YAHOO CALENDAR格式

rawurlencode

<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>

在没有第三方的情况下进行此操作具有很多优势,例如在电子邮件中使用它。


8
投票

这是一个test it服务,用于添加事件

  1. Apple日历
  2. Google日历
  3. 外表
  4. Outlook在线
  5. 雅虎日历

网站和日历上的事件的“添加到日历”按钮易于安装,与语言无关,时区和DST兼容。它适用于所有现代浏览器,平板电脑和移动设备,以及Apple Calendar,Google Calendar,Outlook,Outlook.com和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>

test it


0
投票

正如您所说,订阅您的活动日历的好处是您可以更改日期/时间/信息,它们应该反映在您的订阅者中。为什么要为每个事件而不是一个事件创建单独的日历?

您熟悉Google日历和Facebook的API吗?

至于最后一个问题,你打算在Wordpress和Facebook上维护两个独立的事件源吗?你可以让Wordpress从Facebook获取Feed。也许某种发布到Facebook的事件CMS然后更新Wordpress提要?


0
投票

您可以让程序创建日历的.ics(iCal)版本,然后您可以将此.ics导入到您喜欢的任何日历程序中:Google,Outlook等。

我知道这篇文章很老了,所以我不打算输入任何代码。但如果您希望我提供如何执行此操作的大纲,请对此发表评论。

© www.soinside.com 2019 - 2024. All rights reserved.