我的插件存在问题,但是在商店安装之前,不会在Google表格和文档的附加组件中创建菜单项,直到刷新页面为止。
根据Google支持,我应该查看以下内容:
“通常这是由授权生命周期的问题引起的,特别是在开放阶段。
最常见的罪魁祸首是代码中的一个全局变量,它试图在未经授权的情况下访问Google服务,例如:
var doc = DocumentApp.getActiveDocument();
参见文档:
警告:当您的onOpen(e)函数运行时,将加载整个脚本并执行任何全局语句。这些语句在与onOpen(e)相同的授权模式下执行,如果模式禁止它们将失败。这可以防止打开(e)。如果您发布的加载项无法添加其菜单项,请在浏览器的JavaScript控制台中查看是否抛出错误,然后检查您的脚本以查看onOpen(e)函数或全局变量是否调用不允许的服务在AuthMode.NONE中。“
我不知道我应该如何处理这个问题,因为我的附加组件并非由我创建。我可以做一些小事,但这是我自己无法处理的事情,请真的需要你的帮助。
听到我的剧本:
function onOpen(e) {
SpreadsheetApp.getUi().createAddonMenu()
.addItem('Browse Templates', 'browseTemplates')
.addToUi();
}
function onInstall(e) {
onOpen(e);
}
function browseTemplates(){
collectBasicData();
// Display a modal dialog box with custom HtmlService content.
var htmlOutput = HtmlService
.createTemplateFromFile("Gallery").evaluate()
.setWidth(700)
.setHeight(510);
SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Spreadsheet123 - Template Vault');
}
function collectAllData(){
var sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(DATA_SHEET);
DATA = sheet.getDataRange().getValues();
return DATA;
}
function collectBasicData(){
var sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(PIVOT_SHEET);
var tabSheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(TAB_SHEET);
BASIC_DATA = {
"tab_about" : getValue(tabSheet,"B1"),
"tab_help": getValue(tabSheet,"B2"),
"pivot":sheet.getDataRange().getValues()
};
return false;
}
function getValue(sheet,addr){
return sheet.getRange(addr).getValue().toString().replace(/^\s+|\s+$/g, '');
}
function createACopy(id){
var docName = DocsList.getFileById(id).getName();
return DocsList.getFileById(id).makeCopy(docName).getUrl();
}
function insertInCurrent(id){
var destinationSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheets = SpreadsheetApp.openById(id).getSheets();
for(var i=0;i<sourceSheets.length;i++){
var sheetName = sourceSheets[i].getName();
var source = SpreadsheetApp.openById(id).getSheetByName(sheetName);
source.copyTo(destinationSpreadSheet).setName(sheetName);
}
}
我查看了Google上的文档,但无法理解我应该在脚本中使用它的方式和位置。
非常感谢您的帮助,并提前致谢