将项目添加到Google Apps脚本中的现有菜单

问题描述:

如何在Google Apps脚本中将项目添加到现有菜单(在Google文档中)?将项目添加到Google Apps脚本中的现有菜单

我可以创建一个菜单,然后添加一个项目是:

DocumentApp.getUi().createMenu('MyMenu') 
    .addItem('Insert My Thing', 'myFunction') 
    .addToUi(); 

但似乎有点可笑以添加整个菜单中的单个项目应根据现行的“插入真的去“菜单。

目前它是而不是可能的。尽管文档中提到了

文档,电子表格或表单只能包含一个具有给定名称的菜单。如果相同的脚本或其他脚本添加了一个具有相同名称的菜单,则新菜单将替换旧的菜单。

当我尝试下面的代码

DocumentApp.getUi().createMenu('Tools') 
    .addItem('Tool_item', 'toolItem') 
    .addToUi(); 

另一工具菜单创建:

enter image description here

+0

咦......这似乎令人困惑的是,用户将拥有的东西,他通常会想到会在“插入”一个完全不同的菜单,但我想这事情是这样的。 –

+0

我同意,我认为自定义菜单的整合目前并不是最好的。我特别讨厌打开文档和添加自定义菜单之间的延迟。无法扩展上下文菜单,但我发现它非常有限。但我想这就是Google试图将核心功能与扩展分离的方式。 – Bartek

嗯,这是在电子表格中?我将下面的代码添加到电子表格中 - 并且它正确地替换了具有带有具有两个菜单项目的新菜单的一个项目的旧菜单。

function someOtherFunction(){ 
} 

function addMenu(){ 
    var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var entries = [{ 
name : "Add Menu", 
    functionName : "addMenu" 
    },{ 
    name : "Menu 2", 
    functionName : "someOtherFunction" 
    }]; 
    sheet.addMenu("Test Menu", entries); 

} 

function onOpen() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var entries = [{ 
    name : "Add Menu", 
    functionName : "addMenu" 
    }]; 
    sheet.addMenu("Test Menu", entries); 
}; 
+0

道歉...我应该指定是Google Docs。 –

+0

我认为问题是关于添加一个项目到其中一个默认菜单(例如* File *,* Edit *,* View *)。在自定义菜单的情况下,你是对的。 – Bartek

你可以做你想要自定义菜单(添加,合并......),但你不能以任何方式修改内置菜单,他们没有从谷歌 - 应用程序 - 脚本访问什么。

通过Google Developers documentation

// To create an additional Menu-Item to an existing Main-Menu 
var ui = SpreadsheetApp.getUi(); 
ui.createMenu('Custom Menu') 
.addItem('First item', 'menuItem1') 
.addSeparator() 
.addItem('Second item', 'menuItem2') 
.addToUi(); 

// To Create a Menu-Item to a Sub-Menu in an existing Main-Menu 
var ui = SpreadsheetApp.getUi(); 
ui.createMenu('Custom Menu') 
.addItem('First item', 'menuItem1') 
.addSeparator() 
.addSubMenu(ui.createMenu('Sub-menu') 
.addItem('Second item', 'menuItem2')) 
.addToUi(); 

是,也不是。

是的,您可以将菜单添加到现有的“附件”中。

不,除了您自己定制的菜单外,没有别的地方。

下面的代码可以帮助:

function onOpen(e) { 
    var ui = SpreadsheetApp.getUi(); 
    // Or DocumentApp or FormApp. 
    ui.createAddonMenu() 
    .addItem('Sort Current Column with Header until Blank Rows', 'sortCurrentColumn') 
    .addToUi(); 
} 

function onInstall(e) { 
    onOpen(e); 
}