33

使用谷歌日历 API v3,我向谷歌日历添加了一个事件。现在我想建立一个 html 链接,以便有人可以单击并查看日历事件。

这是我尝试过的:

<a href="https://www.google.com/calendar/feeds/default/private/full/{{ event.googleID }}">View Google</a>

href 看起来像:
https://www.google.com/calendar/feeds/default/private/full/bigstringhere1ovmuup7mjf0

问题是我收到 401 错误“需要授权”

如何建立一个链接来查看/编辑基于谷歌日历 ID 的日历事件?

4

11 回答 11

42

有一种方法!要查看公共日历事件,请使用以下表单的链接:

https://www.google.com/calendar/event?eid={event-id}&ctz={timezone}

其中{event-id}是唯一的事件 ID,{timezone}这些时区之一

这是一个示例:链接到特定的公共日历事件

如果您拥有此活动所在日历的编辑权限,您将能够编辑该活动并查看来宾列表。否则,您只会看到有关该事件的公开信息。

由于确定事件 ID 可能很困难,因此这里有一个小书签,当您编辑其详细信息页面时,它会生成指向您的 Google 日历事件的链接:

javascript:(function(){ try { window.prompt('Shareable link to this event:','https://www.google.com/calendar/event?eid='+document.getElementsByClassName('ep')[0].getAttribute('data-eid')) } catch (e) {alert("Use this bookmarklet to get a shareable link to a Google Calendar event when editing its Details page.")}})()

此书签的一个版本可与新的(截至 2017 年)Google 日历 UI 一起使用:

javascript:(function(){ 
  window.prompt('Shareable link to this event:',
    'https://www.google.com/calendar/event?eid='+
    window.location.href.split("/").pop().split("?")[0])
})()

(也可能有用,如何链接到公共 Google 日历的特定日期:

https://www.google.com/calendar/embed?src={calendar-id}&mode=day&dates={yyyymmdd}%2F{yyyymmdd}

其中{calendar-id}是日历的 ID,{yyyymmdd}是您要链接到的日期。

可选参数包括时区和是否显示各项,例如:

&ctz=Asia/Taipei&showNav=0&showPrint=0&showCalendars=0

示例:链接到公共日历的某一天。)

于 2014-08-08T06:27:23.747 回答
14

这是构建链接的 HTML:

https://www.google.com/calendar/render?action=TEMPLATE&text=Your+Event+Name&dates=20140127T224000Z/20140320T221500Z&details=For+details,+link+here:+http://www.example.com&location=Waldorf+Astoria,+301+Park+Ave+,+New+York,+NY+10022&sf=true&output=xml

于 2016-03-12T21:49:07.570 回答
6

活动 URL 不是日历 URL。

这个链接带来了解释:Google Calender v3

构建此 url 的方法是:

GET https://www.googleapis.com/calendar/v3/calendars/calendarId/events/eventId

其中calendarId&eventId是参数。

希望这会有所帮助。

于 2012-11-23T08:24:36.097 回答
3

我想发布这个,因为它与所提出的问题相切,当我尝试执行以下操作时,这个帖子出现了。

我试图生成一个 Google 事件的唯一目的是添加到其他人的日历中,而不是保存到任何特定的日历中。我在这里找到了一个示例,我目前正在尝试找出它接受的 URL 参数。

https://www.google.com/calendar/render?action=TEMPLATE&text=PRP+Due&dates=20141106T120000Z/20141106T120000Z&details&location&trp=false
于 2015-05-31T11:57:25.010 回答
3

按事件 ID 查看 Google 日历事件。

您可以使用以下示例:

https://www.google.com/calendar/event?eid={event-id}&ctz={timezone}

印度时区示例:

https://calendar.google.com/calendar/event?eid=ZjVicWczYWpndmh0ZmdtYmd0cXFxZWc3czggdTJoZmoybGg0aDcwbmhzMzV2c25pamd1dG9AZw&ctz=Asia/Kolkata
于 2016-12-28T09:29:47.327 回答
0

要从 Google Calendar API v3 获取事件,请调用:

GET https://www.googleapis.com/calendar/v3/calendars/calendarId/events/eventId

该事件包含一个属性htmlLink,这正是您所需要的:

在 Google 日历 Web UI 中指向此事件的绝对链接。只读。

请参阅https://developers.google.com/google-apps/calendar/v3/reference/events

链接如下所示:

https://www.google.com/calendar/event?eid=XzYwcTMwYzFnNjBvMzBlMWk2MG80YWMxZzYwcmo4Z3BsODhyajJjMWg4NHMzNGg5ZzYwczMwYzFnNjBvMzBjMWc2c28zMmRoaDhwMGpnaDIxNnQyNDZkaGc2NG8zMGMxZzYwbzMwYzFnNjBvMzBjMWc2MG8zMmMxZzYwbzMwYzFnNzByNDRoMWk2b3AzOGUxazZoMms2aDFrNmQwamNkaTI2OHBrMmhpMjg4czRjZ2hoNzBwMF8yMDA2MDUwNSBob3BtYW4ubmxfbjE5ZGF2YWgxb3Zkb3EzbGl2N2t1aWU5Z.

当然,只有当您有权访问该事件时,它才会全屏打开该事件。屏幕将包含一个返回按钮以返回日历。

显然,您无法自己构建此链接,因此您需要调用 API,但您可能已经在这样做了。

于 2014-05-05T09:58:18.997 回答
0

要创建用户可以公开查看活动日历的页面,有权更改日历共享设置的用户必须首先公开日历:

  • 在 Google 日历的右上角,单击设置轮。

  • 在“设置”中,单击“日历”选项卡。

  • 单击您正在使用的日历的名称。

  • 接下来,单击“共享此日历”选项卡。确保从下面的屏幕截图中选中复选框(以红色圈出)。

谷歌日历设置页面


  • 然后,单击位于左上角的“日历详细信息”选项卡。

  • 向下滚动到“日历地址”部分,如下面的屏幕截图所示。

  • 点击“HTML”。

  • 将出现一个弹出模式,其中包括您公开访问日历所需的公共 URL。


获取公共 Google 日历的 URL


以下是 URL 的示例:

https://www.google.com/calendar/embed?src=domain.comrandomstring@group.calendar.google.com&ctz=America/Los_Angeles&gsessionid=OK

此外,有关创建和使用日历小工具的信息,请参阅Google 日历数据 API

于 2012-05-27T08:10:56.560 回答
0

当创建一个谷歌日历事件时,在响应中我们得到了result属性。在此result属性中,还有一个htmlLink可用的,其中包含有关正在创建的事件的链接。现在,它可以打开了:

window.open(response.result.htmlLink, '_target');
于 2019-05-11T07:24:03.377 回答
0
  • “时区”: {
  •  "#type": "VarChar(64)",
    
  •  "#eq": "timeZone"
    
  • },
  • "accessRole": "VarChar(64)",
  • “defaultReminders<defaultreminders_events>[]”:{
  •  "method": "VarChar(64)",
    
  •  "minutes": "Integer"
    
  • },
  • "nextSyncToken": "VarChar(64)",
  • “项目<日历事件> []”:{
  •  "kind": "VarChar(64)",
    
  •  "etag": "VarChar(64)",
    
  •  "id": "VarChar(64)",
    
  •  "status": "VarChar(64)",
    
  •  "htmlLink": "VarChar(157)",
    

检查日历事件中 htmlLink 的长度,157 是一个奇怪的数字。它可能更长吗?

于 2021-09-06T06:41:26.637 回答
0

Wordpress + ACF 谷歌 cal。

将您的 ACF 日期选择器设置为自定义返回 Ymd g:ia

然后创建一个谷歌格式的日期。

$event_start_date = get_field('event_start_date');
$event_print_date = date('d/m/Y',strtotime($event_start_date));
$event_start_time = get_field('event_start_time');
$event_end_date = get_field('event_end_date');
$event_print_enddate = date('d/m/Y',strtotime($event_end_date));
$event_end_time = get_field('event_end_time');

$calendarDate = date('Ymd',strtotime($event_start_date)) .'T'. date('Hi',strtotime($event_start_time)). '00/' . date('Ymd',strtotime($event_end_date)) .'T'. date('Hi',strtotime($event_end_time)) . '00';

关联

<a href="https://www.google.com/calendar/render?action=TEMPLATE&text=<?php the_title(); ?>&dates=<?php echo $calendarDate; ?>&details=<?= strip_tags($event_contact_info); ?>  For+details,+link+here:+<?php the_permalink(); ?>&location=<?php echo $calendarLocation; ?>&sf=true&output=xml" target="_blank" rel="nofollow">Add this event to my Google Calendar</a>
于 2020-05-21T04:40:11.433 回答
-3

谷歌已经创建了一个 DIY 页面。

https://support.google.com/calendar/answer/3033039

于 2013-12-10T10:13:35.477 回答