首页 > 解决方案 > 尝试从 Google 表格中删除日历事件时出现“TypeError:无法读取未定义的属性‘getEvents’”

问题描述

我正在使用我发现的代码从谷歌日历中删除批量事件,基于谷歌表格中的值(代码在谷歌表格脚本编辑器中)。当我在我的个人日历上使用它时它正在工作,但是当我尝试从谷歌课堂日历(我是它的经理)中删除事件时,我收到错误消息“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,0,0);
var toDate = new Date(endYear,endMonth,endDay,0,0,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();

}
}

标签: eventsgoogle-sheetscalendargoogle-classroom

解决方案


Apps 脚本提供检索日历的方法:getCalendarsByName(name)getCalendarById(id)

因此,由于您有可用的日历 ID,因此您需要使用以下方法getCalendarById(id)

var calendar = CalendarApp.getCalendarById(calendarId)

由于id明确标识日历,只会返回一个日历(而不是数组),因此请跳过[0].


推荐阅读