使用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?
答案 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。