相关疑难解决方法(0)

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

我编写了一个 google 脚本编辑器插件,并将其发布到 google 市场,并具有私人可见性(它仅对我组织中的用户可见)。我在脚本编辑器中测试了具有所有类型权限(为当前用户安装、在当前文档中启用、已安装和启用)的插件,一切都按预期工作。但是,在将插件发布到市场并将其安装在测试电子表格中后,我不断收到此错误:We're sorry, a server error occurred while reading from storage. Error code PERMISSION_DENIED.来自onOpen函数。

我正在明确设置这些 oauth 范围:

"oauthScopes": [
    "https://www.googleapis.com/auth/script.container.ui",
    "https://www.googleapis.com/auth/spreadsheets.currentonly",
    "https://www.googleapis.com/auth/script.scriptapp",
    "https://www.googleapis.com/auth/userinfo.email",
    "https://www.googleapis.com/auth/userinfo.profile"
  ]
Run Code Online (Sandbox Code Playgroud)

这是我的onOpen触发器:

function onOpen(e: AppsScriptEvent) {
    if (e && e.authMode !== ScriptApp.AuthMode.NONE) {
        const ui = SpreadsheetApp.getUi();
        const menu = ui.createAddonMenu();
        menu.addItem("Add New Offering", "addNewOffering");
        menu.addSeparator();
        menu.addSubMenu(
            ui
                .createMenu("Settings")
                .addItem("Dashboard Name", "changeDashboardName")
                .addItem("Dashboard Start Cell", "changeDashboardStartCell")
        );
        menu.addToUi();
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里还缺少什么其他类型的许可?

triggers google-sheets google-apps-script google-apps-script-addon

17
推荐指数
2
解决办法
4623
查看次数

带有工作表插件的 Google Apps 脚本 PERMISSION_DENIED

我试图实现一个简单的“多选择器侧边栏”扩展基于我在这个谷歌支持线程中找到的这张

当我复制工作表时,它工作正常,但是当我尝试在我的真实工作表中放入完全相同的代码时,它不再起作用。当我尝试从模板中访问 GA 函数时,它会引发错误。

我创建了一个简化的测试项目,它也无法为我工作。

要重现错误:

  1. https://docs.google.com/spreadsheets/创建一个新的电子表格
  2. 创建第二个工作表(选项卡左下角)并将其命名为 CATEGORIES
  3. 在第一列中填写几个字段。内容无所谓 类别
  4. 进入工具 -> 脚本编辑器

在“code.gs”中输入

function doGet() {
  var html = HtmlService.createHtmlOutputFromFile('Index')
      .setTitle('Multiple selector')
      .setWidth(300);
  SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
      .showSidebar(html);
}

function onOpen(e) {
    SpreadsheetApp.getUi().createMenu('Index')
        .addItem('Show Sidebar', 'doGet')
        .addToUi();
        doGet();
}

function getOptions() {
  var validation = {
    sheet: 'CATEGORIES',
    range: 'A2:A'
}

  Logger.log("running getOptions");
  Logger.log(SpreadsheetApp.getActive().getSheetByName(validation.sheet).getRange(validation.range).getDisplayValues());
    return SpreadsheetApp.getActive().getSheetByName(validation.sheet).getRange(validation.range).getDisplayValues()
        .filter(String)
        .reduce(function(a, b) {
            return a.concat(b)
        })
}
Run Code Online (Sandbox Code Playgroud)

并创建一个名为 Index.html 的第二个文件(HTML 文件)

<!DOCTYPE html> …
Run Code Online (Sandbox Code Playgroud)

permissions web-applications google-sheets multiple-accounts google-apps-script

5
推荐指数
2
解决办法
1503
查看次数