在Apps脚本中获取日历事件日期时键入错误:“尝试“ getStartTime()”时出现TypeError”

时间:2018-08-08 07:47:25

标签: google-apps-script google-calendar-api

我正在编写一个脚本,通过将选定的Google日历事件的开始和结束日期/时间设置为今天来对其进行修改。但是,每次尝试获取日历事件的日期或时间时,我都会由于类型错误而陷入困境-例如使用“ event.getTime()”,结果是“ < strong> TypeError:在对象中找不到函数getStartTime ”(请参见示例代码的第19行)。

我同时启用了Calendar API和Google Apps API,并已授权脚本修改我的日历。

我用于选择和检索相关日历事件的代码很好用。但是,基于错误文本,我显然没有将事件作为对象,并且我无法指出需要纠正的内容。我花了2-3天的大部分时间来检查Stack Overflow(例如thisthis帖子),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
    }
}

1 个答案:

答案 0 :(得分:0)

尽管您通过CalendarApp获取了日历ID,但是您正在使用Calendar API来检索Calendar Events,它返回一系列事件(每个事件都是一个JSON对象)。要获取每个事件的开始和结束时间,您必须在循环中访问它们的startend属性:

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函数。