Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 默认日历的GAS日历名称和Gmail使用名称不同_Google Apps Script_Google Calendar Api - Fatal编程技术网

Google apps script 默认日历的GAS日历名称和Gmail使用名称不同

Google apps script 默认日历的GAS日历名称和Gmail使用名称不同,google-apps-script,google-calendar-api,Google Apps Script,Google Calendar Api,由于日历名称错误,getCalendarsByName失败 我意识到,对于我的默认日历,GAS名称与Gmail calendar应用程序显示的名称不同,Gmail calendar应用程序也在日历设置的“calendar name”字段中定义,但使用的名称是Gmail地址 这种行为是故意的吗?我没发现有人提到这件事 编辑 根据要求,这里有一个测试函数来重现问题: function testCalendars(){ var test = CalendarApp.getCalendarsByN

由于日历名称错误,
getCalendarsByName
失败

我意识到,对于我的默认日历,GAS名称与Gmail calendar应用程序显示的名称不同,Gmail calendar应用程序也在日历设置的“calendar name”字段中定义,但使用的名称是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());


}
“测试日历”
是使用“创建新日历”创建的日历。该名称显示在日历应用程序的左侧列表和
日历设置->日历名称中

'mymail@gmail.com“
是与帐户关联的地址

'Def cal displated 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. 

你能举个不起作用的例子吗

使用这段代码,我得到了完全一致的结果

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()+'"');
}
这将返回以下日志:

然后我更改了de calendar名称,如下所示:

并获取以下日志:

我只能确认一切正常


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

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

我不知道这是什么意思:“'Def cal displated name'是日历应用程序中日历列表上显示的上一个日历名称,以及日历设置->日历名称的相关值。”下面:。左边是日历列表。顶部的第一个名称应为默认日历。单击其关联菜单,然后单击“日历设置”。在您找到的可设置值“Calendar Name”中,此处的名称与您之前单击的名称类似。“请同时测试所有…”。这就是我所做的,因此我发现显示的名称不存在,
CalendarApp.getAllCalendars()[0]
使用电子邮件。好的,我知道了。。。我的测试给出了预期的结果,如果我更改默认日历的名称,我可以通过其新名称获得它,而不会出现问题,如我的答案所示。编辑:和getAllCalendars返回具有正确名称的cal对象。。。我不知道为什么它对你不管用,但对我管用。