如何创建将条目添加到日历的链接?


80

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

我设法弄清楚了如何制作日历供稿,但随后它将被添加为新日历,唯一的好处是人们可以“订阅事件”,但是为每个事件都拥有一个日历是很麻烦的。所以我想知道如何实现一个功能,使他们可以轻松地将其添加到主日历中。像mailto:链接那样思考,但如果可能的话,可以使用日历。

同样,在我讨论这个主题时,没有人知道是否可以将事件自动从Facebook导入到WordPress或将事件从WordPress自动导出到Facebook,这很好,但这并不是那么重要。


Answers:


52

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

虽然我在下面详细说明每种服务的操作方法的答案将起作用,但IMO现在更容易与AddThisEvent [https://addthisevent.com]之类的第三方一起使用。它使您可以自定义许多选项,以及添加到Facebook等。 不幸的是,他们现在已经将其作为有偿服务用于个人用途以外的其他用途,并且确实执行了此操作。

我假设还有其他第三方解决方案,例如这一方案,但我只能与之谈一谈,到目前为止,它对我们来说非常有用。


对于“添加到我的Google日历”,他们曾经有一个可以使用的代码生成器表单,但此后便将其删除。有关Google日历链接的更多详细信息,请参见下面的squarecandy的答案

对于Outlook来说,它的BIT更为复杂,但基本上,您需要.vcs使用事件的数据创建一个文件,然后仅创建指向该文件的链接。 此处提供分步说明

对于iCal链接,您可以使用类似此类的PHP类,或者按照此页面上的说明创建ics文件(iCal文件)。


12
谢谢,很遗憾,没有像mailto这样的通用标准:用于电子邮件。
Hultner

似乎Google的“事件发布者指南”页面不再提供该URL生成形式(不幸的是,Google文档的性质不断变化),但是@squarecandy的URL格式仍然可以正常工作(至少对于Google日历而言)!
chbrown 2014年

好吧,他们自己的表单甚至没有生成有效的链接,所以这可能就是他们删除它的原因。:)
squarecandy 2015年

93

Dave帖子中的链接很棒。只是为了将有关google链接的一些技术细节放入此处的答案中:

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编码名称)
  • 日期(ISO日期格式,开始日期/结束日期-必须同时具有开始时间和结束时间-按钮生成器可让您将结束时间留空,但必须有一个结束时间,否则它将无法工作。)
    • 使用用户的时区:20131208T160000 / 20131208T180000
    • 使用全球时间,转换为UTC,然后使用20131208T160000Z / 20131208T180000Z
    • 一整天都可以使用20131208/20131209-请注意,按钮生成器将其弄错了。您必须将以下日期用作全天活动的结束日期,或者将+1天设置为您希望的结束日期。
  • 详细信息(URL编码的事件描述/详细信息)
  • 位置(事件的URL编码位置-确保它是Google地图可以轻松读取的地址)

2018年2月更新:

这是一个新的链接结构,该结构似乎支持不要求API交互的新google版本的Google日历,但没有:

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日期格式,开始日期/结束日期-必须同时具有开始时间和结束时间)
    • 带有开始/结束时间的事件:20131208T160000 / 20131208T180000
    • 一整天的活动,您可以使用20131209分之20131208 -结束日期必须为+1天到你想要的结束日期是什么
  • ctz(时区,例如America / New_York-留空以使用用户的默认时区。强烈建议在几乎所有情况下都包含此默认时区。例如,视频会议提醒:如果三个人在不同时区中单击此链接并设置了提醒他们在“星期二”上午10:00进行“自有”,效果不佳。)
  • 详细信息(URL编码的事件描述/详细信息)
  • 位置(事件的URL编码位置-确保它是Google地图可以轻松读取的地址)
  • 添加(用逗号分隔的电子邮件列表-将邀请对象添加到您的新活动中)

笔记:

  • 上面的旧网址结构现在重定向到此处
  • 支持https
  • 带时区的交易更好
  • 接受+空间,除了%20urlencodevsrawurlencode在PHP中-都可以)

2
如果有人感兴趣,我创建了一个PHP函数,它将构建这种类型的Google日历链接:gist.github.com/squarecandy/26611bbcfc63f9c7e3a7dc45e9145133
squarecandy

2
同样值得注意的是,除非我同时指定了时区日期和ctz参数,否则不会为我设置时区。这里更多的信息:zaclee.net/php/...
扎卡里Schuessler

@squarecandy任何想法如何使它一次设置多个日期?例如,如果您的范围是星期二-星期四,但想在日历中将其显示为3个单独的事件?
garek007

@ garek007我认为不可能。那将是3个不同的事件。如果您无法在在线版Google日历“添加事件”屏幕上执行某项任务,则无法使用此技术。您可能会想出如何使用Google Calendar API一次添加3个事件,但这仅链接到单个事件的“添加事件”。
squarecandy18年

@squarecandy我也想更新管理器,在此创建事件链接中,有什么方法可以添加管理器详细信息?
Nikunj Undhad

12

要添加到Squarecandy的Google日历贡献中,这里是全新的

日历日历格式(无需创建.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。

为了知识,

雅虎日历格式

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

测试一下

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


7
看起来Outlook的链接不再有效。它添加位置并显示“新事件”表单,但不填写其他任何字段。
史蒂夫(Steve)

10
为了扩展@Steve的评论,Outlook链接甚至不再解析为服务器-我收到DNS解析错误。
Owen Blacker '18

3
抱歉,此答案需要更新才能有效,被否决。
webaholik

8

这是“添加到日历”服务,用于在上添加事件

  1. 苹果日历
  2. Google日历
  3. 外表
  4. Outlook Online
  5. 雅虎!日历

用于网站和日历上事件的“添加到日历”按钮易于安装,与语言无关,时区和DST兼容。它可以在所有现代浏览器,平板电脑和移动设备以及Apple日历,Google日历,Outlook,Outlook.com和Yahoo日历中完美运行。

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

在此处输入图片说明


1
绝对好 与addevent.com非常相似,但我认为它具有更多的样式选择,并且它是MIT许可的!因此,这绝对是我的选择。感谢您的链接。
Arvid

9
这已经兼并了addevent.com
分界

-4

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

我知道这篇文章已经很老了,所以我不会打扰输入任何代码。但是,如果您希望我提供有关操作方法的概述,请对此发表评论。


7
如果可以的话,我将不胜感激此代码的示例,尝试使用Outlook,Gmail和iCal做到这一点
KidCache 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.