例如,如果我have the event ID of a Google Calendar event:
4htgpmm1hmak744r0kbkdcodar@google.com
如何构造一个URL以在Google日历界面中查看活动详细信息?
例如,如果我去参加Google日历活动,我会看到如下网址:
从4htgpmm1hmak744r0kbkdcodar@google.com
到NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw
,我可以运行什么函数/算法?
奖金:如果还有一种快捷方式可以通过Google Apps脚本在CalendarEvent上使用,那么奖金就可以了。例如,如果有getUrl()
之类的方法,就像有getId()方法之类。
答案 0 :(得分:1)
由于同一事件可以存在于多个日历中(例如,邀请其他人参加),因此事件ID不足以提供信息。
要构建URL,您既需要事件ID(refresher for how find it),也需要日历ID(有关如何查找它的说明,请参见下文)。 You'll then need to encode都作为base64,最后您将拥有一个有效的Google Calendar事件链接。
对于以下说明,假设我们有一个事件Event1,并且它同时存在于CalendarA和CalendarB两个日历中。
在Google日历界面中,您可以查看以下任意组合:
让我们分配以下ID:
获取event-id
,它是没有@google.com
例如对于Event1,我们有4htgpmm1hmak744r0kbkdcodar
获取calendar-id
,它是用@group.calendar.google.com
代替的@g
的日历ID
例如对于CalendarA,我们有eugu9kan1ddi1pmi6sk3ib56g@g
将两个值中间加一个空格。
<event-id> <calendar-id>
例如对于Event1 + CalendarA,我们有:
4htgpmm1hmak744r0kbkdcodar eugu9kan1ddi1pmi6sk3ib56g@g
将该值编码为base64(例如,在https://www.base64decode.org上):
NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw
您现在可以将此值附加到https://calendar.google.com/calendar/r/eventedit/
https://calendar.google.com/calendar/r/eventedit/NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw
您完成了!该URL将带您进入Google界面中的日历事件。
如果您需要有关如何找到日历ID的说明...
向下滚动直到找到日历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/ ...
以此类推...我认为没有一种解决方案可以解决这种情况,因为不可能随时预测特定用户登录的帐户。