我编写了一个Google Apps脚本,可将电子表格中保存的事件添加到Google日历中。每个事件都存储日历事件的ID,以便在电子表格中的事件被修改时可以更新它。事件仍然可以在日历中手动删除,因此我希望脚本检测到这一点并重新创建事件。不幸的是,我在null
对象上调用getEventById(...)
时不能简单地检查calendar
,因为即使被删除,这个函数似乎返回一个有效的calendar
对象。
CalendarEvent
API文档似乎没有指向检查事件是否已通过UI /手动删除的方法。有没有办法通过Google Apps API访问此媒体资源?
即使永久删除已删除的事件也无法解决问题,但它会阻止对返回的event
对象进行修改。
我可以用什么来检查事件(仍然存在)是否已被“删除”?我唯一能想到的就是get/setTag()
对象的CalendarEvent
方法。
或者,this问题看起来很相似,但感觉应该有比搜索已删除事件列表更好的方法,而且我不确定这会解决让ID字符串返回“永久”的有效事件的问题“删除了。
var calendarId = "[email protected]"
var calendar = CalendarApp.getCalendarById(calendarId);
var event = calendar.createEvent(...);
// Event is then deleted manually in calendar but
// ID has been saved in spreadsheet (or elsewhere)
if (calendar.getEventById("the-deleted-event-id") == null) {
// Create the event (This is never reached)
} else {
// Update the event
}
我花了很长时间来解决这个问题,我无法理解为什么没有更好的方法来解决它,直接由CalendarApp解决。你需要的是这个:
var eventId = "[email protected]".split("@")[0];
if(Calendar.Events.get("yourCalendarId", eventId).status === "cancelled")
CODE://what to do if event was deleted (manually)
笔记:
你会在这个问题上找到更多信息:Checking a Google Calendar Event's Existence