我尝试根据在此Google 支持线程中找到的此 SHEET实现一个简单的“Multi selector sidebar”扩展
当我复制工作表时它工作正常,但是当我尝试将完全相同的代码放入我的真实工作表时,它不再工作了。当我尝试从模板中访问 GA 函数时,它会引发错误。
我创建了一个简化的测试项目,它也无法为我工作。
要重现错误:
- 在https://docs.google.com/spreadsheets/创建一个新的电子表格
- 创建第二张工作表(标签左下角)并将其命名为 CATEGORIES
- 在第一列中填写几个字段。内容不重要
- 转到工具 -> 脚本编辑器
在“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)
})
}
并创建名为 Index.html 的第二个文件(HTML 文件)
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script>
function onFailure(error) {
var div = document.getElementById('output');
div.innerHTML = "ERROR: " + error.message;
}
google.script.run.withFailureHandler(onFailure)
.getOptions();
</script>
</head>
<body>
<div id="output"></div>
</body>
</html>
- 保存项目
- 单击 Run-> Run function -> "onOpen"(第一次运行时您可能需要授权应用程序)
现在在工作表中应该有一个边栏,对我来说打开时出现错误PERMISSION_DENIED
即使我在资源 -> 云平台项目中选择了一个项目,它也不起作用。
奇怪的是,如果我使用原始链接(工作)电子表格并更改代码中的某些内容,它将不再适用于我。
我现在知道的事情: - 它不适用于我的 gmail 或 google 应用程序帐户 - 对于使用相同文档的其他人,它有效 - 如果我禁用 Adblocker 仍然无效 - 如果我从以下位置访问工作表则无效隐身模式 - 如果我使用 Firefox 而不是 Chrome,它确实有效
我错过了什么?