2013-01-12 111 views
1

我正在构建一个Google Apps脚本代码,它将日历中的事件写入电子表格。 我想使用的日历不是我的默认日历,我想通过名称获取此日历。 然而,该方法不工作... getCalendarById的工作,但因为这个剧本是为一个非initated用户,我需要通过名称来获取日历...Google Apps脚本 - 问题getCalendarsByName然后getEvents

感谢您进一步的帮助!

var cal = CalendarApp.getCalendarsByName("Test 21");  
// var cal = CalendarApp.getDefaultCalendar(); 
var sheet = SpreadsheetApp.getActiveSheet(); 

var events = cal.getEvents(new Date("January 1, 2012"), new Date("December 31, 2030")); 

for (var i=0;i<events.length;i++) { 

var details=[[events[i].getTitle(), events[i].getDescription(), events[i].getStartTime(), events[i].getEndTime()]]; 

var row=i+1; 

var range=sheet.getRange(row,1,1,4); 

range.setValues(details); 

} 
} 

当我启动我的剧本,我得到的错误: 类型错误:无法找到日历中的方法getEvents。 (第22行)

回答

2

您是否注意到getCalendarsByName中的's'?这意味着此方法返回一个日历对象数组,因为可能有许多具有相同名称的日历。 如果您认为最有可能只有一个日历与您输入的名称,那么您可以决定只获得第一个。

要做到这一点,简单地定义卡尔这样

var cal = getCalendarByName(name string)[0]