Sen*_*ful 1 google-calendar-api google-apps-script
如果我有 Google Calendar event 的 event ID,例如:
4htgpmm1hmak744r0kbkdcodar@google.com
如何构建 URL 以在 Google 日历界面中查看事件详细信息?
例如,如果我去参加一个谷歌日历活动,我会看到一个像这样的 URL:
什么功能/算法可我跑从去4htgpmm1hmak744r0kbkdcodar@google.com
到NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw
?
奖励:如果还有一个通过 Google Apps Script 处理CalendarEvent的快捷方法,那就太棒了。例如,如果有一个方法,getUrl()
就像有一个getId()方法一样。
由于同一个事件可以存在于多个日历中(例如通过邀请其他人加入),事件 ID 不是足够的信息。
要构建一个 URL,您需要事件 ID(如何查找它的复习)和日历 ID(有关如何查找它的说明,请参见下文)。然后您需要将两者都编码为 base64,最后您将拥有一个有效的 Google 日历事件链接。
对于以下说明,假设我们有一个事件 Event1,它同时存在于日历 A 和日历 B 中。
在 Google 日历界面中,您可以查看以下任意组合:
让我们分配以下 ID:
获取event-id
,这是没有的事件ID@google.com
例如,对于 Event1,我们有 4htgpmm1hmak744r0kbkdcodar
获取calendar-id
,这是@group.calendar.google.com
替换为的日历 ID@g
例如对于 CalendarA 我们有 eugu9kan1ddi1pmi6sk3ib56g@g
将两个值连接起来,中间有一个空格。
<event-id> <calendar-id>
Run Code Online (Sandbox Code Playgroud)
例如,对于 Event1 + CalendarA,我们有:
4htgpmm1hmak744r0kbkdcodar eugu9kan1ddi1pmi6sk3ib56g@g
Run Code Online (Sandbox Code Playgroud)将值编码为 base64(例如在https://www.base64decode.org 上):
NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw==
Run Code Online (Sandbox Code Playgroud)删除训练==
:
NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw
Run Code Online (Sandbox Code Playgroud)您现在可以将此值附加到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
Run Code Online (Sandbox Code Playgroud)你完成了!该 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, '');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1874 次 |
最近记录: |