Google apps script 谷歌脚本&x2B;工作表+;日历“;您没有调用getCalendarsByName的权限;

Google apps script 谷歌脚本&x2B;工作表+;日历“;您没有调用getCalendarsByName的权限;,google-apps-script,google-sheets,google-authentication,Google Apps Script,Google Sheets,Google Authentication,我有一个带有以下代码的google脚本: function hoursBetween(fromDate, toDate) { var dates = initializeDates(); var from = dates[fromDate]; var to = dates[toDate]; var workCals = CalendarApp.getCalendarsByName('Work'); var workCal = workCals[0]; var even

我有一个带有以下代码的google脚本:

function hoursBetween(fromDate, toDate) {
  var dates = initializeDates();
  var from = dates[fromDate];
  var to = dates[toDate];
  var workCals = CalendarApp.getCalendarsByName('Work');
  var workCal = workCals[0];  
  var events = workCal.getEvents(from, to);
  var predictedMonthlyHours = 0;
 for (var i = 0; i < events.length; i++) {
   var event = events[i];
   var startTime = event.getStartTime();
   var endTime = event.getEndTime();
   var duration = endTime - startTime;
   duration =  parseFloat(duration/(3600*1000));
   duration -= dates['break'];
   predictedMonthlyHours += duration; 
 }
 return predictedMonthlyHours;
}
函数小时间隔(从日期到日期){
变量日期=初始化日期();
var from=日期[fromDate];
var to=日期[toDate];
var workCals=CalendarApp.getCalendarsByName('Work');
var-workCal=workCals[0];
var events=workCal.getEvents(从、到);
var predictedMonthlyHours=0;
对于(var i=0;i
我已经在脚本编辑器中运行,没有问题(它要求auth,我接受了) 当我尝试从电子表格中调用函数时,出现以下错误:

“您没有调用getCalendarsByName的权限”


我也尝试过添加触发器,但没有结果。

因为该方法正在查找多个“日历”,它正在返回一个日历数组。所以,如果你只有一个名为“工作”的日历,你仍然需要调用它并选择它是哪一个。因此,尝试将变量“workCals”更改为`

添加[0]将选择第一个可用的


看不到其余的代码,很难破译。

您如何尝试从电子表格中调用

如果您试图通过电子表格公式
=hoursBetween()
调用,那么它将无法工作。请参阅…“与大多数其他类型的应用程序脚本不同,自定义功能从不要求用户授权访问个人数据。因此,他们只能调用无法访问个人数据的服务。”

设置单元格值的其他选项:

  • 手动按钮单击侧边栏加载项
  • 手动单击自定义菜单选项
  • 安装定时触发器以自动运行

这与此无关,这是一个身份验证问题。将我的变量设置为数组没有问题。我可以稍后调用WorkCal[0]…我最终使用了一个加载项。基本上,我认为这归结为一个单元格不能调用一个函数来编辑除自身以外的单元格…可能是重复的
var workCals = CalendarApp.getCalendarsByName('Work')[0];