问题描述
我正在使用我发现的代码,用于根据谷歌工作表中的值从谷歌日历中删除批量事件(代码在谷歌工作表脚本编辑器中)。 当我在我的个人日历上使用它时它正在工作,但是当我尝试从谷歌课堂日历(我是它的经理)中删除事件时,我收到错误消息“TypeError:无法读取未定义的属性'getEvents' ”。你知道为什么会这样吗?
function delete_google_calendar()
{
var spreadsheet = SpreadsheetApp.getActiveSheet();
var startYear = spreadsheet.getRange("B67").getValue();
var startMonth = spreadsheet.getRange("F67").getValue();
var startDay = spreadsheet.getRange("H67").getValue();
var endYear = spreadsheet.getRange("B68").getValue();
var endMonth = spreadsheet.getRange("F68").getValue();
var endDay = spreadsheet.getRange("H68").getValue();
var fromDate = new Date(startYear,startMonth,startDay,0);
var toDate = new Date(endYear,endMonth,endDay,0);
var calendarId = "mandel-institute.org.il_classroom682af58e@group.calendar.google.com";
// First number: Year
//Second number: Month (January=0)
//Third number: Day
var calendar = Calendarapp.getCalendarsByName(calendarId)[0];
var events = calendar.getEvents(fromDate,toDate);
for(var i=0; i<events.length;i++){
var ev = events[i];
ev.deleteEvent();
}
}
解决方法
Apps 脚本提供了检索日历的方法:getCalendarsByName(name) 和 getCalendarById(id)
因此,由于您有可用的日历 ID,您需要使用方法 getCalendarById(id)
:
var calendar = CalendarApp.getCalendarById(calendarId)
由于 id
明确标识了一个日历,因此只会返回一个日历(而不是数组),因此跳过 [0]
。