Google apps script getCalendarById,其中ID是字符串
在Google电子表格上有几个日历ID。每个都在B列中,格式为“SuperLongStringGoesHere@group.calendar.google.com". 当我手动输入日历ID而不是使用变量(变量为calRngVal)时,一切都正常。当我使用变量时,它返回null。如何使用变量调用getCalendarByIdGoogle apps script getCalendarById,其中ID是字符串,google-apps-script,Google Apps Script,在Google电子表格上有几个日历ID。每个都在B列中,格式为“SuperLongStringGoesHere@group.calendar.google.com". 当我手动输入日历ID而不是使用变量(变量为calRngVal)时,一切都正常。当我使用变量时,它返回null。如何使用变量调用getCalendarById var calRng = calids.getRange(a, 2); var calRngVal = calRng.getDisplayValue(); var cal
var calRng = calids.getRange(a, 2);
var calRngVal = calRng.getDisplayValue();
var cal = CalendarApp.getCalendarById(calRngVal);
var ad = cal.getName();
提前谢谢
下面是调试器的图片:您确定代码正在选择一个包含日历id值的单元格吗?试试这个:
var calRng = calids.getRange("A1:B");
var calRngVal = calRng.getValues();
var cal = CalendarApp.getCalendarById(calRngVal[1][1]);
var ad = cal.getName();
如果不起作用,请尝试使用记录器:
Logger.log(calRngVal);
使用存储在工作表中的字符串值访问日历,无需执行任何特殊操作。你的方法和Simon回答中提到的方法都应该有效 一定是出了什么事。您确定有权限访问工作表中列出的所有日历吗?如果您没有权限,getCalendarById将返回null 将getCalendarById调用后的代码包装在try/catch块中,这样一个“坏”日历就不会使脚本崩溃 例如:
还要注意,逐个循环和获取范围是一种缓慢的方法,可以使用getDataRange()以二维数组返回工作表中的所有数据,然后在数组上循环。但是,我会在优化之前解决“null”问题。是的,单元格中有一个日历id值。当我观看调试器时,它显示calRngVal有一个字符串,用引号括起来。”7o5jcphfb102oa1hhl99hn80s4@group.calendar.google.com“在谷歌应用程序脚本的背后,只有一个Javascipt解释器在完成它的工作。因此,变量字符串和直接输入字符串之间没有区别。你试过我提供的代码了吗?嗨,西蒙,是的,我试过了,我得到了同样的错误。我将尝试附加调试器的图片,以便您可以查看它显示的内容。您是正确的。我需要与执行脚本的帐户共享一些日历。谢谢你和西蒙。
var calRng = calids.getRange(a, 2);
var calRngVal = calRng.getDisplayValue();
var cal = CalendarApp.getCalendarById(calRngVal);
try{
var ad = cal.getName();
//other code here
}catch(e){
Logger.log('Exception processing '+calRngVal+', row '+a+'. Message: '+e);
}