为什么我不能从 Google AppScript for Sheets 的侧边栏中调用服务器函数?

Mat*_*one 5 javascript google-sheets google-apps-script

我在从 Google 表格中的 html 侧边栏调用服务器端 AppScript 函数时遇到问题。

我用下面的简单示例代码复制了我的问题。

它应该做什么

单击按钮应调用 alert我的 Code.gs 脚本并向用户显示警报。

实际发生了什么

单击按钮显示错误:

We're sorry, a server error occurred while reading from storage. Error code PERMISSION_DENIED.
Run Code Online (Sandbox Code Playgroud)

AppScript 仪表板的“执行”部分中没有条目 alert(),因此该函数似乎从未被调用过?

代码.gs:

We're sorry, a server error occurred while reading from storage. Error code PERMISSION_DENIED.
Run Code Online (Sandbox Code Playgroud)

test.html(以及身体)

function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('Matthew')
    .addItem('Show Sidebar', 'sidebar')
    .addToUi();
};

function sidebar() {
  const html = HtmlService.createHtmlOutputFromFile('test.html')
    .setTitle('Matthew Experiment')
    .setWidth(300);

  SpreadsheetApp.getUi().showSidebar(html);


}

function alert() {
  SpreadsheetApp.getUi().alert("alert!"); 
}

Run Code Online (Sandbox Code Playgroud)

我已经确认客户端代码正在使用服务器端函数名称正确膨胀,它只是调用不起作用的函数。

在此处输入图片说明

我的代码似乎与所有入门指南相同,但我没有看到其他人发布有关此问题的信息。希望这里有人比我对这个问题有更深入的了解。

更新,更奇怪

我打开了一个私人窗口并且它起作用了,所以我想,也许这是一个导致问题的扩展?但即使禁用所有扩展也不能在主窗口中修复它。我已经注销/登录到我的 google 帐户,但如果不打开私人浏览器窗口,它仍然无法正常工作。

这个问题在 chrome/edge/firefox 中是一致的。

小智 6

当全局登录用户与脚本所有者不同时,就会发生这种情况。

注销您的所有 google 帐户,然后使用您用于创建脚本的帐户重新登录。这解决了这个问题。