如何构造指向Google日历活动的链接?

时间:2018-12-26 06:06:03

标签: google-apps-script google-calendar-api

例如,如果我have the event ID of a Google Calendar event

  

4htgpmm1hmak744r0kbkdcodar@google.com

如何构造一个URL以在Google日历界面中查看活动详细信息?

例如,如果我去参加Google日历活动,我会看到如下网址:

  

https://calendar.google.com/calendar/r/eventedit/NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw

4htgpmm1hmak744r0kbkdcodar@google.comNGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw,我可以运行什么函数/算法?

奖金:如果还有一种快捷方式可以通过Google Apps脚本在CalendarEvent上使用,那么奖金就可以了。例如,如果有getUrl()之类的方法,就像有getId()方法之类。

2 个答案:

答案 0 :(得分:1)

由于同一事件可以存在于多个日历中(例如,邀请其他人参加),因此事件ID不足以提供信息。

要构建URL,您既需要事件ID(refresher for how find it),也需要日历ID(有关如何查找它的说明,请参见下文)。 You'll then need to encode都作为base64,最后您将拥有一个有效的Google Calendar事件链接。

对于以下说明,假设我们有一个事件Event1,并且它同时存在于CalendarA和CalendarB两个日历中。

在Google日历界面中,您可以查看以下任意组合:

  • CalendarA中的Event1
  • CalendarB中的Event1

让我们分配以下ID:

  • 事件1 ID:4htgpmm1hmak744r0kbkdcodar@google.com
  • 日历A ID:eugu9kan1ddi1pmi6sk3ib56g@group.calendar.google.com
  • 日历B ID:afd3zeuguoepmi32s5i56g@group.calendar.google.com

要构建事件网址:

  1. 获取event-id,它是没有@google.com

    的事件ID

    例如对于Event1,我们有4htgpmm1hmak744r0kbkdcodar

  2. 获取calendar-id,它是用@group.calendar.google.com代替的@g的日历ID

    例如对于CalendarA,我们有eugu9kan1ddi1pmi6sk3ib56g@g

  3. 将两个值中间加一个空格。

    <event-id> <calendar-id>
    

    例如对于Event1 + CalendarA,我们有:

    4htgpmm1hmak744r0kbkdcodar eugu9kan1ddi1pmi6sk3ib56g@g
    
  4. 将该值编码为base64(例如,在https://www.base64decode.org上):

    NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw
    
  5. 您现在可以将此值附加到https://calendar.google.com/calendar/r/eventedit/

    https://calendar.google.com/calendar/r/eventedit/NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw
    
  6. 您完成了!该URL将带您进入Google界面中的日历事件。


如何查找日历ID

如果您需要有关如何找到日历ID的说明...

要查找日历ID:

  1. 转到日历设置
  2. 向下滚动直到找到日历ID字段。

    这可能是一个以@group.calendar.google.com结尾的值,您的电子邮件地址或其他某个值。

如果您在查找日历ID时遇到问题,则另一种可能有用的工具是adding the eventdeb=1 parameter to the URL,转到事件的故障排除信息,然后寻找{{1 }}或organizer值,它们都包含日历ID。

答案 1 :(得分:0)

@Senseful是一个超级有用的答案,并且有效!

在上面添加一些注意事项。首先,在进行base64编码时,最后将以==结尾,将其删除

第二,当事件所属的日历不属于用户登录的主帐户时,基本日历URL将不起作用。例如,如果您登录了3个帐户,则每个帐户都有一个不同的URL,例如

https://calendar.google.com/calendar/r/ ...

https://calendar.google.com/calendar/b/2/r/ ...

https://calendar.google.com/calendar/b/3/r/ ...

以此类推...我认为没有一种解决方案可以解决这种情况,因为不可能随时预测特定用户登录的帐户。