How can I find the Event Id of my Google Calendar event?

48,058

Solution 1

On The Google Calendar Website

Since he originally asked how to click into the calendar and find the ID of a particular event, and since that's what I needed to know how to do too:

  1. Click the event in your Google Calendar.

  2. It will take you to a page with a URL such as https://calendar.google.com/calendar/render?pli=1#eventpage_6%7Ceid-NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw-1-0-

  3. Look for "eid" in the URL.

  4. Select and copy the string between eid- and the next -. (In my example here, it is NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw.)

  5. Now you need to decode from Base64 format. You could paste that string into a tool such as https://www.base64decode.org/.

  6. The result will be two strings separated by a space. The first string is your Event ID.

Solution 2

There is another way to see that Event Id.

  1. Go to the event debugging URL at https://www.google.com/calendar/render?gsessionid=OK&eventdeb=1
  2. Double click to view the affected event.
  3. Select the drop down menu 'More Actions'.
  4. Click on the 'Troubleshooting Info'.
  5. Copy the text that appears and paste it in your reply to support.

Source: http://googleappstroubleshootinghelp.blogspot.com/2012/09/how-to-find-troubleshooting-information.html

Solution 3

There is one other quick and easy approach.

  • Click on the event in your calendar. It doesn't need to be in debug mode.
  • From the URL, copy the string between the last slash and the question mark.
  • Paste this string into a base64 encoder. (https://www.base64decode.org/)
  • You will get the event ID and the email of the calendar owner (you?).
  • (The eventId is the first string of characters.)

Solution 4

TL;DR

You should use the advanced API for this.

Calendar.Events.list(calendarId).items[0].id; // returns the id of the first event

If you just want the event ID for a specific event and are fine using a manual approach, then eventdeb=1 is your best bet.

If you want a programmatic solution, note that you cannot use the standard API (CalendarApp) because the documentation for getId() on a CalendarEvent states:

Gets the unique iCalUID of the event. Note that the iCalUID and the event id used by the Calendar v3 API and Calendar advanced service are not identical and cannot be used interchangebly. One difference in their semantics is that in recurring events all occurrences of one event have different ids while they all share the same iCalUIDs.

This means if you want to construct a URL for a recurring event, you'll run into issues because you can't use getId() properly, especially for recurring events. The best fix is to use the Advanced Calendar API. (Also note that if you're trying to construct a link to the calendar event, the advanced API even has an htmlLink property with the encoded calendarId + realEventId.


Here are some more details as to why getId() it breaks for recurring events: This is because when you call event.getId() on an event that is repeating, you get the same id. There is no way to reference a specific instance of the calendar event using the simple Calendar API. The URL is still able to reference a specific instance of the event by appending a format such as _20190626T000000Z. However, it's not clear what values need to be provided there. There are also cases where _ is replaced with _R and Z replaced with @google.com, further complicating matters.

To prove this is a problem:

  1. Find a repeating calendar event.
  2. Parse its URL (which is guaranteed to refer to the specific instance).
  3. Call CalendarApp.getEventById(parsedId1).getId() notice the value that is returned.
  4. Now parse a URL for a different instance of the event.
  5. Call CalendarApp.getEventById(parsedId2).getId() notice the value that is returned. Although parsedId1 and parsedId2 are different strings (referring to the specific instances), the returned value of getId() on both of those is the same. The event is actually a reference to the specific instances, but you can't serialize their IDs anymore.

If you really want to use the simple calendar API, you'll likely need some kind of synchronization process and to store metadata/tags on each instance of the calendar events during as alluded to in this answer. However, the Advanced API will make your life a lot easier.

Solution 5

  • get the cal
  • loop thru all events during the time period in question
function myFunction() {
  var cal = CalendarApp.getCalendarById(id);
  var events = cal.getEvents(startTime, endTime);
  for ( var i in events ) {
    var id = events[i].getId();
  }
}
Share:
48,058
CodyBugstein
Author by

CodyBugstein

Aspiring computer nerd.

Updated on October 07, 2021

Comments

  • CodyBugstein
    CodyBugstein over 2 years

    I created some Google Calendar events and now I would like to do some operations on them programmatically.

    Trouble is I don't have their IDs.

    When I go into the calendar and click on the event, there is nowhere where I can see the ID.

    Does anyone know where I can find it?

  • akauppi
    akauppi about 6 years
    Clicking the event now opens a dialog, but one can get the link by "︙" > Publish Event > Link to event
  • Senseful
    Senseful over 5 years
    Some usages require that you append @google.com to the end of the event id. See this question for more details.
  • Senseful
    Senseful almost 5 years
    This is excellent! If you want the id programmatically though, see this answer.