我的日历事件的 URL 已使用以下逻辑成功构建/编码:
// Get the event URL using the CalendarApp event's ID
var ati = calendar.getId().indexOf("@");
var splitEventId = newEvent.getId().split('@');
var EventId = Utilities.base64Encode(splitEventId[0] + " " + calendar.getId().substring(0, ati + 2)).replace(/=/gi, '');
var eventUrl = "https://calendar.google.com/calendar/u/0/r/eventedit/" + EventId;
在另一个脚本中,我现在想要获取/记录原始事件 ID。 所以我需要以同样的方式解码现有的 eventUrl 。 我试过这个:
var eventIdEncoded = eventUrl.split("/").pop(); // Get the encoded part from the URL
try {
eventIdEncoded = eventIdEncoded.replace(/-/g, '+').replace(/_/g, '/'); // Revert URL-safe Base64 encoding
eventIdEncoded += "==".substring(0, 2 - eventIdEncoded.length % 2); // Add padding if needed
var eventIdDecoded = Utilities.base64Decode(eventIdEncoded);
// Convert the decoded byte array to a string
var eventId = Utilities.newBlob(eventIdDecoded).getDataAsString();
Logger.log("Decoded Event ID: " + eventId);
但是我获得的事件 ID 似乎是一串看起来太长的数字,末尾有一个“@g”,所以我 99% 确定它没有正常工作。
非常感谢任何帮助。
您获得的
eventId
为您提供了事件ID和日历ID(末尾带有@g的那个)。为了仅获得 eventId
,我在您的脚本中添加了 split
。
// Convert the decoded byte array to a string
var eventId = Utilities.newBlob(eventIdDecoded).getDataAsString(); Logger.log("Decoded Event ID: " + eventId);
var decodeEventId = eventId.split(" ")[0]; Logger.log(decodeEventId);
参考: