我想删除选定的日历事件,但事件删除功能现在在新脚本中无效。
我有谷歌脚本附加到谷歌电子表格,其中包含全天活动的详细信息。协作者使用菜单运行脚本来创建或删除谷歌日历中的事件。脚本循环并选择相关事件,包括其存储的谷歌日历EventID,并在谷歌日历中删除或创建它。这一切都很好。
我在新的硬盘上创建了一个新的谷歌用户帐户、新的谷歌日历和新的电子表格。将脚本复制到新工作表并调整CalendarID等后失败。。EventDelete现在是一个Void函数。错误消息为TypeError: CalendarApp.deleteEventSeries is not a function
。检查列表,函数deleteEventSeries
现在为Void。我已经测试了代码,并能够编辑描述,因此代码按预期工作,但我找不到在日历中删除谷歌日历事件的函数/方法。
function DeleteCalendarEvents() {
var CalID = "myUserName@gmail.com"
var cal =CalendarApp.getCalendarById(CalID);
// I have removed code which loops each row in a google spreadsheet
// and selects events marked delete grabbing its stored eventID.
{
var EventID = ("The event ID eg scrambledLettersNumbers@google.com");
var event = cal.getEventSeriesById(EventID);
CalendarApp.deleteEventSeries();
}
}
我认为您混淆了OOP的一些基本原理。您的代码失败是正常的,因为类CalendarApp没有名为deleteEventSeries()
的函数。你可以试着在该类的参考资料中找到。
您想要删除的实际上是通过调用Calendar
对象中的方法getEventSeriesById
检索到的对象,该对象的类型为CalendarEventSeries
。
因此,要删除事件系列,您确实需要调用方法deleteEventSeries()
,但需要使用CalendarEventSeries
对象,而不是CalendarApp
。
function DeleteCalendarEvents() {
var CalID = "myUserName@gmail.com"
var cal =CalendarApp.getCalendarById(CalID);
var eventSeriesID = "<Id of the event Series>";
var eventSeries = cal.getEventSeriesById(eventSeriesID);
eventSeries.deleteEventSeries();
}
这些函数并不像您在评论中建议的那样被弃用。返回类型为void
只是意味着函数不会返回任何有意义的变量,因为您刚刚删除了事件。
var a = eventSeries.deleteEventSeries();
>>> a == null // True