因此,我希望Google电子表格从具有两个标签的日历中获取数据。一个选项卡将是输入数据的位置; “ ss”。第二个选项卡是一个设置选项卡,您可以在其中选择DateFrom,DateTo和CurrentEmail。 “ ssSettings”。当用户输入往返日期时,他们还可以查看脚本当前从中获取信息的电子邮件,并且可以根据需要更改该电子邮件。我将变量设置为“ datefrom”和“ dateto”,但是当我尝试对“ currentEmail”执行相同操作时,出现以下错误;
TypeError: Cannot call method "getEvents" of null. (line 8, file "Code")
有人知道如何解决吗?我是Google脚本的新手。这是我的脚本;
function getEvents() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("GettingEvents")
var ssSettings = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("GettingEventsSettings");
var DateFrom = ssSettings.getRange("B1").getValue();
var DateTo = ssSettings.getRange("B2").getValue();
var CurrentEmail = ssSettings.getRange("B3").getValue();
var cal = CalendarApp.getCalendarById(CurrentEmail);
var events = cal.getEvents(DateFrom, DateTo);
var lr = ss.getLastRow();
ss.getRange(2, 1, lr, 5).clearContent();
for(var i = 0;i<events.length;i++){
var title = events[i].getTitle();
var sd = events[i].getStartTime();
var ed = events[i].getEndTime();
var loc = events[i].getLocation();
var des = events[i].getDescription();
ss.getRange(i+2,1).setValue(title);
ss.getRange(i+2,2).setValue(sd);
ss.getRange(i+2,3).setValue(ed);
ss.getRange(i+2,4).setValue(loc);
ss.getRange(i+2,5).setValue(des);
}
}
您可以使用类似的方法获取所有日历上的信息:
function calinfo() {
var cals=CalendarApp.getAllCalendars();
var calObj={nameA:[]};
cals.forEach(function(cal,i){calObj[cal.getName()]=cal.getId();calObj.nameA.push(cal.getName());});
Logger.log(JSON.stringify(calObj));
}