2013-11-25 206 views
4

如何在Google Apps腳本中將項目添加到現有菜單(在Google文檔中)?將項目添加到Google Apps腳本中的現有菜單

我可以創建一個菜單,然後添加一個項目是:

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

但似乎有點可笑以添加整個菜單中的單個項目應根據現行的「插入真的去「菜單。

回答

3

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

文檔,電子表格或表單只能包含一個具有給定名稱的菜單。如果相同的腳本或其他腳本添加了一個具有相同名稱的菜單,則新菜單將替換舊的菜單。

當我嘗試下面的代碼

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

另一工具菜單創建:

enter image description here

+0

咦......這似乎令人困惑的是,用戶將擁有的東西,他通常會想到會在「插入」一個完全不同的菜單,但我想這事情是這樣的。 –

+0

我同意,我認爲自定義菜單的整合目前並不是最好的。我特別討厭打開文檔和添加自定義菜單之間的延遲。無法擴展上下文菜單,但我發現它非常有限。但我想這就是Google試圖將核心功能與擴展分離的方式。 – Bartek

0

嗯,這是在電子表格中?我將下面的代碼添加到電子表格中 - 並且它正確地替換了具有帶有具有兩個菜單項目的新菜單的一個項目的舊菜單。

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

1

你可以做你想要自定義菜單(添加,合併......),但你不能以任何方式修改內置菜單,他們沒有從谷歌 - 應用程序 - 腳本訪問什麼。

0

通過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(); 
1

是,也不是。

是的,您可以將菜單添加到現有的「附件」中。

不,除了您自己定製的菜單外,沒有別的地方。

下面的代碼可以幫助:

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); 
} 
相關問題