尝试从 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);
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]

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...