脚本export_gcal_to_gsheet出错

问题描述 投票:-1回答:1

我已经搜索了我的错误的答案,但没有运气。我发现此Google App脚本能够在私人Google日历的日期范围内进行搜索。我尝试更改有错误的代码行上的日期。它引发了以下错误:

TypeError:无法调用null的方法“getEvents”。 (第39行,文件“代码”)解散。

引发错误的代码行是:

 var events = cal.getEvents(new Date("Feburary 5, 2018 00:00:00 CST"), new Date("March 2, 2018 23:59:59 CST"));


function export_gcal_to_gsheet(){
    var mycal = "https://calendar.google.com/calendar/ical/compucom.com_3hd44kal0eabhffqoqgijs6it8%40group.calendar.google.com/private-dd5e021b521802f13b6d664dd3d275fa/basic.ics";
    var cal = CalendarApp.getCalendarById(mycal);
    var events = cal.getEvents(new Date("Feburary 5, 2018 00:00:00 CST"), new Date("March 2, 2018 23:59:59 CST"));
    var sheet = SpreadsheetApp.getActiveSheet();
    var header = [["Calendar Address", "Event Title", "Event Description", "Event Location", "Event Start", "Event End", "Calculated Duration", "Visibility", "Date Created", "Last Updated", "MyStatus", "Created By", "All Day Event", "Recurring Event"]]
    var range = sheet.getRange(1,1,1,14);
    range.setValues(header);
    for (var i=0;i<events.length;i++) {
    var row=i+2;
    var myformula_placeholder = '';
    var details=[[mycal,events[i].getTitle(), events[i].getDescription(), events[i].getLocation(), events[i].getStartTime(), events[i].getEndTime(), myformula_placeholder, ('' + events[i].getVisibility()), events[i].getDateCreated(), events[i].getLastUpdated(), events[i].getMyStatus(), events[i].getCreators(), events[i].isAllDayEvent(), events[i].isRecurringEvent()]];
    var range=sheet.getRange(row,1,1,14);
    range.setValues(details);
    var cell=sheet.getRange(row,7);
    cell.setFormula('=(HOUR(F' +row+ ')+(MINUTE(F' +row+ ')/60))-(HOUR(E' +row+ ')+(MINUTE(E' +row+ ')/60))');
    cell.setNumberFormat('.00');

    }
    }
    function onOpen() {
      Browser.msgBox('App Instructions - Please Read This Message', '1) Click Tools then Script Editor\\n2) Read/update the code with your desired values.\\n3) Then when ready click Run export_gcal_to_gsheet from the script editor.', Browser.Buttons.OK);

    }
google-apps-script google-calendar-api
1个回答
1
投票

您收到该错误,Cannot call method "getEvents" of null,因为cal变量为null。

根据Google Calendar的getCalendarById method的文档参考,如果日历不存在,或者您无权访问它,则会返回null

您的日历ID不正确,或者您无权访问该日历(即,它既不与您共享也不公开)。解决该问题后,您的脚本将能够检查其事件。

我建议修改脚本的这一部分:

var cal = CalendarApp.getCalendarById(mycal);
if(!cal) {
    Browser.msgBox("Unable to access calendar with id=" + mycal);
    return;
}
var events = cal.getEvents(....

这将避免空引用并提醒您日历隐私问题或其ID的问题。

© www.soinside.com 2019 - 2024. All rights reserved.