从URL获取EventID

问题描述 投票:0回答:1

我的日历事件的 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% 确定它没有正常工作。

非常感谢任何帮助。

google-apps-script google-sheets google-calendar-api
1个回答
0
投票

您获得的

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);

参考:

© www.soinside.com 2019 - 2024. All rights reserved.