我正在编写一个脚本,通过将选定的Google日历事件的开始和结束日期/时间设置为今天来对其进行修改。但是,每次尝试获取日历事件的日期或时间时,我都会由于类型错误而陷入困境-例如使用“ event.getTime()”,结果是“ < strong> TypeError:在对象中找不到函数getStartTime ”(请参见示例代码的第19行)。
我同时启用了Calendar API和Google Apps API,并已授权脚本修改我的日历。
我用于选择和检索相关日历事件的代码很好用。但是,基于错误文本,我显然没有将事件作为对象,并且我无法指出需要纠正的内容。我花了2-3天的大部分时间来检查Stack Overflow(例如this和this帖子),Apps Script文档,API参考以及许多其他有关解决方案或示例的相关资源,以及尝试所有可以找到的“ get”变体,但无济于事。
我是Apps Script的新手,所以将不胜感激。
function FloatEvents() {
var calName = "AAAAAAA"; //The name of the calendar to modify
var calID = CalendarApp.getCalendarsByName(calName)[0].getId();
var fromDate = new Date(Date.now() - 7*1000*3600*24); //Start of the time range with events to be handled
var untilDate = new Date(Date.now() + 1*1000*3600*24); //End of the time range with events to be handled
var optionalArgs = {
timeMin: fromDate.toISOString(),
timeMax: untilDate.toISOString(),
showDeleted: false,
singleEvents: true,
orderBy: 'startTime'
};
var service = Calendar.Events;
var response = Calendar.Events.list(calID, optionalArgs);
var events = response.items;
// ----- Loop thru period's events -----
for (i = 0; i < events.length; i++) {
Logger.log(events[i].getStartTime()); // <=== THIS RESULTS IN A "TypeError: Cannot find function getStartTime in object" ERROR
// ----- Process event -----
// Event update code goes here
// Will work on this once I solve the dates problem
}
}
答案 0 :(得分:0)
尽管您通过CalendarApp获取了日历ID,但是您正在使用Calendar API来检索Calendar Events,它返回一系列事件(每个事件都是一个JSON对象)。要获取每个事件的开始和结束时间,您必须在循环中访问它们的start
和end
属性:
for (i = 0; i < events.length; i++) {
var startTime = events[i].start.dateTime;
var endTime = events[i].end.dateTime;
console.log(startTime);
console.log(endTime);
}
在开始编码之前,您可以尝试API检查要检索的内容,以便知道要使用的数据的结构。
但是,如果要使用CalendarApp服务而不是Calendar API,则必须调用getEvents函数,该函数返回CalendarEvent数组。这些对象确实具有getStartTime函数。