我编写了一个 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
我试图实现一个简单的“多选择器侧边栏”扩展基于我在这个谷歌支持线程中找到的这张表
当我复制工作表时,它工作正常,但是当我尝试在我的真实工作表中放入完全相同的代码时,它不再起作用。当我尝试从模板中访问 GA 函数时,它会引发错误。
我创建了一个简化的测试项目,它也无法为我工作。
要重现错误:

在“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