[英]Google App Script Error: You do not have permission to call getActiveForm?
我正在创建一个脚本,该脚本从表单中获取信息并将其写入日历。 当我在脚本编辑器中运行脚本时,它运行良好,从电子表格中获取信息并创建日历事件。 但是,当我填写表单并提交(提交是触发器)时,我收到一条错误消息,指出我无权调用 getActiveForm()。 我拥有表格和日历。 我很欣赏任何想法。
代码
function createEvent() {
var calendarToUse = "testing";
var ssUrlToUse ='https://docs.google.com/a/bay.k12.fl.us/spreadsheets
/d/1ZTDQL9G5U7RqbbKQbAfb3ERqFwpSsC3EOQxdD1zdQwA/edit#gid=441997215';
/* Get Canalnder*/
var calen = CalendarApp.getCalendarsByName(calendarToUse);
var cal = calen[0];
Logger.log(cal.getName());
/* get info from responses*/
var mySS
=SpreadsheetApp.openByUrl(ssUrlToUse).getActiveSheet()
Logger.log(mySS.getName());
var values = mySS.getDataRange().getValues();
var response = values[values.length-1];
var i=2;
var desc = response[i];
var loc = response[i+1];
var start = makeGreatDate( response[i+2], response[i+4]);
var end = makeGreatDate(response[i+3],response[i+6]);
var title = response[i+5];
/* populate calendar event*/
var event = cal.createEvent(title, start, end, {
description : desc,
location : loc
});
};
function makeGreatDate(date, time) {
var day = new Date(date);
day.setHours(time.getHours());
day.setMinutes(time.getMinutes());
Logger.log( "The Date is"+ day);
return day;
}
我遇到了同样的问题。 我的脚本只是将表单响应和格式转换为电子邮件。 与 OP 类似,我不会在脚本中的任何地方对FormApp.getActiveForm()
进行一次调用。
在我添加PropertiesService.getScriptProperties()
调用后,此权限问题立即开始。
虽然不是一个成熟的解决方案,但我能够通过为FormApp.getActiveForm()
添加一行,保存,然后保存我的触发器(再次检查权限)来解决这个问题。 我被要求确认脚本的Offline Access
权限。
然后我删除了不需要的行,表单工作正常。
从 UI 中删除触发器并重新添加它会提示它请求新的权限,“离线访问”。 我同意了这一点,从那时起它就起作用了。
如果您在添加触发器后更改了代码,则需要删除触发器并重新添加它,这也将
这很奇怪,但您的脚本必须具有 Google Drive 的权限。 在脚本中插入一些代码,以便应用程序为其请求许可(例如):
var d = DriveApp.getRootFolder();
然后运行脚本,授予权限。 之后,您可以删除插入的行,除非您将代码从一种形式复制到另一种形式。
我在附加到电子表格的脚本上遇到了同样的问题,但是在提交为该电子表格提供数据的表单时做了一些事情。 我在 Resources->All Triggers 下发现我有一个剩余的通知,其中一个事件列为“来自表单”。 由于脚本在电子表格中起作用,具有“来自表单”事件通知导致错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.