getCalendarsByName
失败了。
我意识到,对于我的默认日历,GAS名称与Gmail日历应用程序显示的名称不同,也在日历设置的“日历名称”字段中定义,但使用的名称是Gmail地址。
这种行为是否符合设计要求?我没有找到任何提及它。
根据要求,这是一个重现问题的测试功能:
function testCalendars(){
var test = CalendarApp.getCalendarsByName('Test calendar')[0];
var def = CalendarApp.getDefaultCalendar();
var mail = CalendarApp.getCalendarsByName('mymail@gmail.com')[0];
var all = CalendarApp.getAllCalendars();
var defdisp = CalendarApp.getCalendarsByName('Def cal displayed name')[0];
Logger.log('test: ' + test.getName());
Logger.log('def: ' + def.getName());
Logger.log('mail: ' + mail.getName());
Logger.log('all[0]: ' + all[0].getName());
//Logger.log('defdisp: ' + defdisp.getName());
}
'Test calendar'
是使用“创建新日历”创建的日历。该名称是日历应用程序左侧列表中显示的名称,位于Calendar settings->Calendar Name
。
'mymail@gmail.com'
是与该帐户关联的地址。
'Def cal displayed name'
是日历应用中日历列表中显示的上方日历名称,以及Calendar settings->Calendar Name
的相关值。
日志给出:
[14-03-16 17:25:00:620 CET] test: Test calendar
[14-03-16 17:25:00:620 CET] def: mymail@gmail.com
[14-03-16 17:25:00:621 CET] mail: mymail@gmail.com
[14-03-16 17:25:00:621 CET] all[0]: mymail@gmail.com
取消注释:
//Logger.log('defdisp: ' + defdisp.getName());
我明白了:
TypeError: Cannot call method "getName" of undefined.
答案 0 :(得分:0)
你能展示一个不起作用的例子吗?
使用此代码,我可以获得完美一致的结果。
function test(){
var def = CalendarApp.getDefaultCalendar();
var defName = def.getName()
Logger.log('default Calendar is "'+defName+'"');
var cal = CalendarApp.getCalendarsByName(defName);
Logger.log('result cal is "'+cal[0].getName()+'"');
}
返回以下日志:
然后我像这样改变了日历名称:
并获取以下日志:
我只能确认一切正常。
编辑:请使用如下小脚本测试所有日历:
function testCalendars(){
var all = CalendarApp.getAllCalendars();
for(var n in all){
Logger.log('all['+n+']: ' + all[n].getName());
}
}