如果我有 Google 日历事件的事件 ID,例如:
如何构建 URL 来查看 Google 日历界面中的活动详细信息?
例如,如果我去参加 Google 日历活动,我会看到如下 URL:
我可以运行什么函数/算法来从
[email protected]
到 NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw
?
奖励:如果还有一个通过 Google Apps 脚本在 CalendarEvent 上运行的快捷方法,那就更好了。例如,如果有一个诸如
getUrl()
的方法,就像有一个 getId() 方法一样。
由于同一事件可以存在于多个日历中(例如通过邀请其他人参加),因此事件 ID 不是足够的信息。
要构建 URL,您需要事件 ID(了解如何查找它)和日历 ID(有关如何查找它的说明,请参阅下文)。 然后您需要将编码为base64,最后您将获得有效的Google日历活动链接。
对于以下说明,假设我们有一个事件 Event1,并且它存在于日历 CalendarA 和 CalendarB 中。
在 Google 日历界面中,您可以查看以下任意组合:
让我们分配以下 ID:
获取
event-id
,即不带 @google.com
的事件 id
例如对于事件 1,我们有
4htgpmm1hmak744r0kbkdcodar
获取
calendar-id
,即日历 ID,其中 @group.calendar.google.com
替换为 @g
例如对于 CalendarA,我们有
eugu9kan1ddi1pmi6sk3ib56g@g
将两个值连接起来,中间留一个空格。
<event-id> <calendar-id>
例如对于事件 1 + 日历 A,我们有:
4htgpmm1hmak744r0kbkdcodar eugu9kan1ddi1pmi6sk3ib56g@g
将值编码为base64(例如在https://www.base64decode.org上):
NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw==
删除训练
==
:
NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw
您现在可以将此值附加到
https://www.google.com/calendar/event?eid=
(查看事件页面)或 https://calendar.google.com/calendar/r/eventedit/
(编辑事件页面):
https://www.google.com/calendar/event?eid=NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw
or
https://calendar.google.com/calendar/r/eventedit/NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw
你完成了!该 URL 将带您进入 Google 界面中的日历活动。
如果您需要有关如何查找日历 ID 的说明...
向下滚动直至找到日历 ID 字段。
这可能是以
@group.calendar.google.com
结尾的值、您的电子邮件地址或其他值。如果您在查找日历 ID 时遇到问题,另一个可能有帮助的工具是 将
eventdeb=1
参数添加到 URL,转到事件的 故障排除信息,然后查找 organizer
或participant
值,两者都包含日历 ID。
var eventUrl = "https://www.google.com/calendar/event?eid=" +
Utilities.base64Encode(event.getId().split('@')[0] +
" " +
event.getOriginalCalendarId())
.replace(/\=/g, '');
@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/...
等等...我认为没有解决方案可以帮助解决这种情况,因为无法预测特定用户随时登录的帐户。