CalendarApp事件ID

时间:2017-07-07 21:23:48

标签: javascript google-apps-script google-sheets google-calendar-api

使用Google Apps脚本,我尝试在CalendarApp中创建一个事件,并在电子表格中存储该事件的链接。 要创建指向事件的链接,我需要获取事件ID,但是在Google Apps脚本中使用event.getID()会返回错误的事件ID。

链接的格式应为: https://calendar.google.com/calendar/event?eid= {EVENTID} =%7BAmerica /芝加哥%7D

EventID应该类似于: tmFmbHZydmU1aDBDZGhlYmMwaWdqcW1wZGMgdDY1HT6yhuHI5YXJwYW5lMHV2OTYzamtAZw

getID()返回: 065cvve58nriutnkuses332fkf@google.com

var event = CalendarApp.getCalendarById(calID).createAllDayEvent(eventName, new Date (eventDate));
var eventID = event.getId();
var eventLink = "https://www.google.com/calendar/event?eid=" + eventID + "&ctz={America/Chicago}";
Logger.log(eventLink);

为什么GAS会以这种格式返回ID?

3 个答案:

答案 0 :(得分:0)

根据此documentation

  

的getId()

     

获取日历的ID。用户默认日历的ID是   他们的电子邮件地址。

您必须拥有活动的特定ID。

您也可以查看此链接:

根据此link,ID并不总是相同,它们是相同的,显然会在同步之前分配一个临时ID。

答案 1 :(得分:0)

返回给您的ID是日历ID(065cvve58nriutnkuses332fkf@google.com)

如果再次检查该ID是否与您要在其中创建事件的日历的ID匹配-请转到设置和共享日历,如屏幕截图所示。

然后,您可以使用此ID调用您要使用的日历: calendar = CalendarApp.getCalendarById('065cvve58nriutnkuses332fkf@google.com');

然后,您可以按照自己的原始意图进行跟进... eventId = calendar.createAllDayEvent(eventName,new Date(eventDate))。getId;

答案 2 :(得分:0)

返回的is an iCalUID的ID与用于特定事件的事件ID不可互换。参见a related answer on StackExchange by "luc"

在多个日历系统中处理事件时使用iCalUID ID。对于仅在Google日历中使用ID的情况,请使用luc推荐的方法,通过列出所有事件并与iCalUID匹配来通过高级日历服务获取事件ID。

出于测试目的,您可以通过导航到Google日历,单击事件,单击编辑,然后将URL的一部分复制到“ https://calendar.google.com/calendar/r/eventedit/”之后来获取事件ID。