GAS日历名称和Gmail使用的名称因默认日历而异

时间:2014-03-15 17:17:26

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

由于日历名称错误,

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. 

1 个答案:

答案 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()+'"');
}

返回以下日志:

enter image description here

然后我像这样改变了日历名称:

enter image description here

并获取以下日志:

enter image description here

我只能确认一切正常。


编辑:请使用如下小脚本测试所有日历:

function testCalendars(){
  var all = CalendarApp.getAllCalendars();  
  for(var n in all){
    Logger.log('all['+n+']: ' + all[n].getName());
  }
}