尝试从侧边栏中使用 google.script.run 运行函数时,容器绑定脚本获取权限错误

Bri*_*vis 4 javascript sidebar google-apps-script

我尝试在我的电子表格上实现一个侧边栏来获取用户输入以供我的脚本使用。我无法让它成功调用任何服务器端功能。我将 google 文档中的一个简单脚本和我通读的几个 stackoverflow 问题放在一起,但我一直收到错误消息。它能够打印到控制台,但在尝试使用google.script.run调用logText()函数时出错

脚本文件:

function onOpen() {
  SpreadsheetApp.getUi()
      .createMenu('Extra Functions')
      .addItem('Show sidebar', 'showSidebar')
      .addToUi();
}
function showSidebar() {
  var html = HtmlService.createHtmlOutputFromFile('Test')
    .setTitle('Testing')
    .setWidth(300);
  SpreadsheetApp.getUi()
    .showSidebar(html);
}
function logInput(text) {
  Logger.log(text);
}
Run Code Online (Sandbox Code Playgroud)

HTML 文件 (Test.html):

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
    function onFailure(error) {
      var div = document.getElementById('output');
      div.innerHTML = "ERROR: " + error.name + ": " + error.message;
    }
    function logText(){
      var txt = document.getElementById("txt_input").value;
      console.log(txt);
      google.script.run.withFailureHandler(onFailure).logInput(txt);
    }
    </script>
  </head>
  <body>
    <label for="txt_input">Input Text:</label>
    <input type="text" id="txt_input"><br>
    <button onclick='logText()'>Send Name</button><br>
    <div id="output"></div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我已经尝试在新的 Apps Script V8 和 Apps Script Legacy 上运行它,但在每个上我都得到了一个略有不同的错误。

Apps 脚本旧版

错误:ScriptError:您无权执行该操作。请要求此项目的所有者授予您访问权限。

应用脚本 V8

错误:ScriptError:很抱歉,从存储读取时发生服务器错误。错误代码 PERMISSION_DENIED。

我一直在研究授权,但据我所知,它具有容器绑定脚本所需的所有权限(https://developers.google.com/apps-script/guides/bound)。它具有/auth/script.container.ui OAuth 范围,应该允许它“在 Google 应用程序内的提示和侧边栏中显示和运行第三方 Web 内容”,以及/auth/spreadsheets范围。我也是电子表格和脚本项目的所有者。

由于它不作为 Web 应用程序运行,因此不需要部署,也不需要 doGet() 函数。 https://developers.google.com/apps-script/guides/html#serve_html_as_a_google_docs_sheets_slides_or_forms_user_interface

res*_*ans 11

我遇到了同样的问题,对我来说问题是让用户使用多个谷歌帐户登录。它也可能适用于您的情况。用户尝试仅使用一个帐户登录,权限问题消失了。

这与安装自定义插件时可能出现的问题相同。希望能帮助到你。


小智 5

看起来像是新引擎中的一个错误。我有一个类似的问题。脚本中的函数是从 HTML 调用的。新发动机出现故障。我禁用了 V8 引擎,它可以工作,所以它似乎是 Google 内部的东西。