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

新手上路,请多包涵

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

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

另外,当我谈到这个主题时,有谁知道是否可以自动将事件从 Facebook 导入 WordPress 或将事件从 WordPress 导出到 Facebook,这会很棒,但这并不重要。

原文由 Hultner 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 950
2 个回答

更新(个人使用免费):

现在支持 HTTPS

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

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


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

对于 Outlook ,它稍微复杂一些,但基本上您需要创建一个包含事件数据的 .vcs 文件,然后只需链接到该文件即可。 此处的分步说明

对于 iCal 链接,您可以使用 像这样 的 PHP 类,或按照 本页 关于如何创建 ics 文件(iCal 文件)的说明进行操作。

原文由 Dave 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

谷歌日历链接

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

参数是:

  • 动作=模板(必需)
  • 文本(事件的 url 编码名称)
  • 日期(ISO 日期格式,开始日期/结束日期 - 必须同时具有开始时间和结束时间 - 按钮生成器会让你将结束时间留空,但你必须有一个,否则它将不起作用。)
    • 使用用户的时区: 20131208T160000/20131208T180000
    • 使用全球时间,转换为 UTC,然后使用 20131208T160000Z/20131208T180000Z
    • 全天活动,您可以使用 2013120820131209 - 请注意,按钮生成器弄错了。您必须使用以下日期作为一天全天活动的结束日期,或者将结束日期设置为 +1 天。
  • 详细信息(url 编码的事件描述/详细信息)
  • 位置(事件的 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 日期格式,开始日期/结束日期 - 必须 有开始和结束时间)
    • 具有开始/结束时间的事件: 20131208T160000/20131208T180000
    • 全天活动,您可以使用 2013120820131209 - _结束日期必须是 +1 天,无论您希望结束日期是什么_。
  • ctz ( timezone such as America/New_York - 留空以使用用户的默认时区。强烈建议在几乎所有情况下都包括它。例如,视频会议的提醒:如果三个不同时区的人单击此链接并设置一个星期二上午 10:00 提醒他们“自己的”,这不会很好。)
  • 详细信息(url 编码的事件描述/详细信息)
  • 位置(事件的 url 编码位置 - 确保它是谷歌地图可以轻松读取的地址)
  • 添加(逗号分隔的电子邮件列表 - 将客人添加到您的新活动中)

笔记:

  • 上面的旧 url 结构现在重定向到这里
  • 支持https
  • 交易时区更好
  • 接受 + 除了 %20 之外的空间( urlencode vs rawurlencode 工作)

原文由 squarecandy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题