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

时间:2013-11-25 17:01:44

标签: google-apps-script

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

我可以创建一个 new 菜单并添加一个项目:

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

但为单个项目添加整个菜单似乎有点荒谬,这个菜单应该在现有的“插入”菜单下。

5 个答案:

答案 0 :(得分:3)

目前可能。即使文档说

  

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

当我尝试以下代码时

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

创建了另一个工具菜单:

enter image description here

答案 1 :(得分:2)

您可以使用自定义菜单(添加,组合...)执行您想要的操作但您不能以任何方式修改内置菜单,无法通过Google-Apps-Script访问它们

答案 2 :(得分: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);
}

答案 3 :(得分:0)

嗯,这是电子表格吗?我将以下代码添加到电子表格中 - 它正确地替换了旧菜单,其中包含一个具有TWO菜单项的新菜单的项目。

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);
};

答案 4 :(得分: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();