无法在 'Installed for current user' 配置下测试附加组件(即 AuthMode.NONE)
Unable to test add-on under 'Installed for current user' config (i.e. AuthMode.NONE)
我正在尝试构建我的第一个编辑器插件,其中相同的代码库应该在文档、表格和幻灯片上工作。
我仍处于测试阶段,这就是我遇到障碍的地方。问题来了 -
根据 Installed versus enabled 的文档,如果 select 测试配置为 为当前用户安装 (但尚未启用) ,菜单 是 应该是可见的(这将在 AuthMode.NONE
下);但是,根据我的脚本,它向我抛出一个错误,指示 -
Google Apps Script: You do not have permission to perform that action.
...而且菜单也不可见。
注意:应该在浏览器控制台上查看此错误
这是代码库和清单文件 -
Code.gs
var fileUI = SpreadsheetApp.getActiveSpreadsheet() ? SpreadsheetApp.getUi() : (DocumentApp.getActiveDocument() ? DocumentApp.getUi() : (SlidesApp.getActivePresentation() ? SlidesApp.getUi() : false));
function onInstall(e) {
onOpen(e);
}
function onOpen(e) {
if (fileUI) {
var menu = fileUI.createAddonMenu();
if (e && e.authMode == ScriptApp.AuthMode.NONE) {
menu.addItem('Please Login', 'login');
} else {
menu.addItem('Hurray', 'itWorks');
}
menu.addToUi();
}
}
function login() {
fileUI.alert('Please login to access this add-on');
}
function itWorks() {
fileUI.alert('Hurray! It works');
}
appscript.json(清单文件)
{
"timeZone": "Asia/Kolkata",
"dependencies": {
},
"oauthScopes": [
"https://www.googleapis.com/auth/documents.currentonly",
"https://www.googleapis.com/auth/presentations.currentonly",
"https://www.googleapis.com/auth/spreadsheets.currentonly"
],
"exceptionLogging": "STACKDRIVER"
}
备注
- 附加组件在其他两个配置条件下测试时完美运行(两者都具有
AuthMode.LIMITED
):
- 在当前文档中启用
- 已安装并启用
- 问题在所有 3 个编辑器中仍然存在:文档、表格和幻灯片
- 我只需要附加组件正在使用的当前文档的读取权限(不确定我是否需要在那里编辑某些内容)
我觉得我在这里缺少一些超级基本的东西。如果我跳过了涵盖此内容的文档的某些部分,我深表歉意。任何帮助,将不胜感激。谢谢。
编辑笔记:
- 添加了关于 oauthScopes 的第三条评论
- 澄清了菜单不可见的问题
当脚本文件被加载到内存中以执行任何函数(onOpen
或任何其他函数)时,所有全局变量都是 loaded/executed。您的问题源于试图在 AuthMode.None
.
下获取 active(getActive*()
) 文档
如果您可以到达 Ui
而无需到达 getActive()
,那是可能的。但是您正在尝试访问其间的文档:
SpreadsheetApp .getActiveSpreadsheet() ? SpreadsheetApp.getUi().
粗体部分导致了问题。 SpreadsheetApp.getUi()
会很好。
您也可以尝试 try{...}...catch(e){}
。
参考文献:
Authorization modes - 访问文档:AuthMode 下否:“NONE” table
Related answer - 可能无效。
我正在尝试构建我的第一个编辑器插件,其中相同的代码库应该在文档、表格和幻灯片上工作。
我仍处于测试阶段,这就是我遇到障碍的地方。问题来了 -
根据 Installed versus enabled 的文档,如果 select 测试配置为 为当前用户安装 (但尚未启用) ,菜单 是 应该是可见的(这将在 AuthMode.NONE
下);但是,根据我的脚本,它向我抛出一个错误,指示 -
Google Apps Script: You do not have permission to perform that action.
...而且菜单也不可见。
注意:应该在浏览器控制台上查看此错误
这是代码库和清单文件 -
Code.gs
var fileUI = SpreadsheetApp.getActiveSpreadsheet() ? SpreadsheetApp.getUi() : (DocumentApp.getActiveDocument() ? DocumentApp.getUi() : (SlidesApp.getActivePresentation() ? SlidesApp.getUi() : false));
function onInstall(e) {
onOpen(e);
}
function onOpen(e) {
if (fileUI) {
var menu = fileUI.createAddonMenu();
if (e && e.authMode == ScriptApp.AuthMode.NONE) {
menu.addItem('Please Login', 'login');
} else {
menu.addItem('Hurray', 'itWorks');
}
menu.addToUi();
}
}
function login() {
fileUI.alert('Please login to access this add-on');
}
function itWorks() {
fileUI.alert('Hurray! It works');
}
appscript.json(清单文件)
{
"timeZone": "Asia/Kolkata",
"dependencies": {
},
"oauthScopes": [
"https://www.googleapis.com/auth/documents.currentonly",
"https://www.googleapis.com/auth/presentations.currentonly",
"https://www.googleapis.com/auth/spreadsheets.currentonly"
],
"exceptionLogging": "STACKDRIVER"
}
备注
- 附加组件在其他两个配置条件下测试时完美运行(两者都具有
AuthMode.LIMITED
):- 在当前文档中启用
- 已安装并启用
- 问题在所有 3 个编辑器中仍然存在:文档、表格和幻灯片
- 我只需要附加组件正在使用的当前文档的读取权限(不确定我是否需要在那里编辑某些内容)
我觉得我在这里缺少一些超级基本的东西。如果我跳过了涵盖此内容的文档的某些部分,我深表歉意。任何帮助,将不胜感激。谢谢。
编辑笔记:
- 添加了关于 oauthScopes 的第三条评论
- 澄清了菜单不可见的问题
当脚本文件被加载到内存中以执行任何函数(onOpen
或任何其他函数)时,所有全局变量都是 loaded/executed。您的问题源于试图在 AuthMode.None
.
getActive*()
) 文档
如果您可以到达 Ui
而无需到达 getActive()
,那是可能的。但是您正在尝试访问其间的文档:
SpreadsheetApp .getActiveSpreadsheet() ? SpreadsheetApp.getUi().
粗体部分导致了问题。 SpreadsheetApp.getUi()
会很好。
您也可以尝试 try{...}...catch(e){}
。
参考文献:
Authorization modes - 访问文档:AuthMode 下否:“NONE” table
Related answer - 可能无效。