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对象。。。我不知道为什么它对你不管用,但对我管用。