我有一个包含以下代码的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;
}
我已经在脚本编辑器中运行没有问题(它要求auth并且我接受了) 当我尝试从电子表格中调用该函数时,出现以下错误:
&#34;您无权调用getCalendarsByName&#34;
我也试过添加没有结果的触发器。
答案 0 :(得分:2)
您是如何从电子表格中调用的?
如果您尝试通过电子表格公式=hoursBetween()
拨打电话,那么它就无法工作。请参阅Custom Functions ...&#34;与大多数其他类型的应用程序脚本不同,自定义功能从不要求用户授权访问个人数据。因此,他们只能拨打无法访问个人数据的服务,&#34;
设置单元格值的其他选项:
答案 1 :(得分:0)
因为该方法正在寻找多个&#34; Calendars&#34;它返回了一系列日历。因此,如果您只有一个名为&#34; Work&#34;的日历,您仍然需要调用它并选择它是哪一个。所以尝试更改变量&#34; workCals&#34;到`
system_clock::duration
添加[0]将选择第一个可用的。
看不到代码的其余部分,很难解读。