【发布时间】:2017-05-12 09:49:14
【问题描述】:
我为我的公司创建了一个简单的插件。调用时,插件会查看当前工作表,并用给定词汇表中的相应值替换所有单元格。
例如,它将查找值为“Brand”的所有单元格,并将其替换为“123_brand”,将“Name”替换为“321_name”等。
为此,我使用了本地工作表(“词汇表”),所有这些数据都在其行中(第一列有“品牌”、“名称”等,而第二列有“123_brand”、“321_name” “, ETC。)。我公司的所有成员都已阅读该表上的授权。
我通过以下方式加载它:
function onOpen() {
SpreadsheetApp.getUi().createAddonMenu()
.addItem('Parse sheet', 'parseSheet')
.addToUi();
}
function onInstall(){
onOpen();
}
var librarySpreadsheet = SpreadsheetApp.openById("ID to my Glossary Sheet");
function parseSheet(){
/* Does the sheet parsing */
}
问题是:它不起作用。
安装后,“解析表”按钮正常出现,一切正常。但是,如果用户转到不同的工作表,则插件无法在那里工作。检查控制台显示以下消息:
Google Apps 脚本:您无权执行该操作。
如果用户在另一张表中删除并重新安装插件,它将再次开始正常工作。
我尝试改为授予编辑授权,但它仍然不起作用。这适用于所有用户,包括我自己。
为什么我的插件在安装后被拒绝访问外部电子表格?
【问题讨论】:
-
我猜它与“授权模式”有关。 Quote: 从商店安装插件时,其 onInstall(e) 函数在 AuthMode.FULL 中运行。 AuthMode 可以在插件安装后更改安装。你读过Link to Add-on Authorization Lifecycle
-
当你说插件不起作用时,是否意味着你在插件菜单下看不到这个特定的插件?
-
@JackBrown 我的意思是我在插件菜单中看到了插件,但没有它的功能,只是“帮助”
-
@SandyGood 这似乎真的很适合我的问题,是的......我会测试一下,看看效果如何
-
我将
onInstall函数放在code.gs 的最顶部。在onInstall()之前有onOpen()。我无法证明这样会更好,但有一个问题我认为已经解决了。我知道这听起来很愚蠢,但改变它的成本很低。
标签: google-apps-script google-sheets google-apps google-sheets-api