【问题标题】:How can I authorize custom function to use Google Calendar?如何授权自定义功能使用 Google 日历?
【发布时间】:2020-01-03 03:40:42
【问题描述】:

我正在尝试在 Google 表格中创建一个自定义函数,该函数会生成一个包含巴西假期的数组,以便在另一个计算假期数据间隔的公式中将其自动化。但是此代码正在生成该错误消息:

不允许脚本执行此操作。所需权限:(https://www.googleapis.com/auth/calendar || https://www.googleapis.com/auth/calendar.readonly || https://www.google.com/calendar/feeds)(第 4 行)。

我已经在 Google API 控制台中允许了日历 API 并创建了凭据,但我不知道是否需要在我的代码中使用它们,或者是否存在一些 Google 问题。

这是我尝试过的代码:

function FERIADOS() {
  var cal = "pt.brazilian#holiday@group.v.calendar.google.com";
  var calendario = CalendarApp.getCalendarById(cal);

  var dtini = new Date('January 1, 2019 00:00:01 -0300');
  var dtfim = new Date('December 31, 2020 23:59:59 -0300');

  var eventos = calendario.getEvents(dtini, dtfim);

  for (var i = 1; i < eventos.length ; ++i) {
     var event = [];
     event[i] = eventos[i].getStartTime(); 
  }

  return event;
}

【问题讨论】:

  • 你不能。正如错误消息清楚地表明的那样。因此,您必须编写一个宏或菜单驱动的函数,因为它由当前/安装用户调用并与该用户帐户及其权限相关联。
  • 即使创建宏也不起作用。我认为这是因为自定义函数上不允许使用日历服务,所以我可以用来即兴创作的唯一方法是创建一个新的列并在每一行上插入数组,然后使用间隔。我要在代码中创建一个时间驱动触发器,所以间隔总是会更新。但是感谢帮助。 :D

标签: javascript google-apps-script google-sheets google-calendar-api custom-function


【解决方案1】:

日历服务不是自定义功能可用的服务之一。阅读Guidelines for custom functionsUsing Apps Script Services

【讨论】:

  • 谢谢,我只是临时将数组内容插入到一张纸上,所以它可以工作。
猜你喜欢
  • 1970-01-01
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多