【发布时间】:2020-11-14 04:15:12
【问题描述】:
问候,
我发现了几个关于这个错误的问题:
"ScriptError: Authorisation is required to perform that action." 但我找不到与我的问题有关的问题。
我要做的是使用 google.script.run 从 .html 文件调用函数 .gs 文件,其中两个文件都在库中。参考this answer、this answer和this bug report,我在使用该库的脚本中创建了“包装函数”,但仍然未能完成执行。
这就是我所做的:
.html 在库中:
<html>
<head>
<script>
function onFailure(error) {
console.log("ERROR: " + error);
}
function myfunc() {
console.log("HERE");
google.script.run.withFailureHandler(onFailure).callLibraryFunction('LibraryName.test', ['test123']);
}
</script>
</head>
<body>
<button onclick="myfunc()">CLICK</button>
</body>
</html>
库中的.gs
function test(x){
Logger.log(x);
}
.gs 在使用库的脚本中:
function callLibraryFunction(func, args) {
var arr = func.split(".");
var libName = arr[0];
var libFunc = arr[1];
args = args || [];
return this[libName][libFunc].apply(this, args);
}
控制台记录HERE,但随后记录ERROR: ScriptError: Authorisation is required to perform that action.,而不是预期的输出test123。
注意:HTML 用于表格中的自定义无模式对话框,不适用于 Web 应用程序。
我真的希望有人可以帮助我。提前谢谢你。
【问题讨论】:
-
您似乎没有在库中使用 doGet() 函数来访问库的 HTML 部分。
-
我需要
doGet()吗?因为我没有从 Web 应用程序 URL 访问它,我只是在表格中使用 HTML 进行自定义对话框,而不是重定向到页面。 (很抱歉,我之前忘记提及这一点,我会更新问题。)但是,我确实从 HTML 文件创建了一个 HtmlOutput [例如:.createOutputFromFile("htmlfile")],并且 HTML 呈现并运行,因为控制台记录了HERE正如我在问题中提到的那样。 -
我明白了。在从对话框执行此操作之前,您是否尝试过从脚本编辑器手动运行一次脚本?见here。
-
我做了,控制台记录了预期的输出
test123。这意味着它可以在没有对话框的情况下直接使用它。此外,所有需要的权限/范围都已经过验证。我什至尝试通过编辑清单文件appscript.json使范围更通用。但是,仍然没有运气。 -
1.您的代码库是否包含任何可能导致错误的触发器? 2. 您在清单中提供的范围是什么? 3. 看看this。
标签: javascript google-apps-script google-sheets modeless-dialog