找不到脚本功能:条目

时间:2018-08-13 15:45:42

标签: google-apps-script menu

基于Adding arguments to a function in the onOpen entries object,我试图将条目添加到Google工作表的菜单中。

我收到标题错误:

  

找不到脚本功能:条目有关更多信息,请参见https://developers.google.com/apps-script/refere

我下面的代码在做什么错了?

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  var entries = [{
    name : "Summary",
    functionName : "copyRowsByColumnPattern",
  },
  {
    name : "Summary2",
    functionName : "copyRowsByColumnPattern",
  }];

  ui.createMenu('Push to Sheet').addItem('Select Sheet', 'entries').addToUi();
}

3 个答案:

答案 0 :(得分:2)

创建菜单的最简单方法如下:

function onOpen() {
  // Add a custom menu to the spreadsheet.
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp, or FormApp.
    .createMenu('Custom Menu')
    .addItem('First item', 'menuItem1')
    .addItem('Second item', 'menuItem2')
    .addItem('Third item', 'menuItem3')
    .addToUi();
}

Documentation

答案 1 :(得分:1)

要创建菜单(如Apps脚本Menus guide所示),有两条路线:

  1. Ui类(适用于文档,表单和新版表格
  2. Spreadsheet#addMenu()(适用于旧版表格)。

给出一组要运行的无参数函数:

const entries = [
  {name: "function1", functionName: "foo"},
  {name: "function2", functionName: "bar"},
  {name: "function3", functionName: "baz"},
];

使用Ui路线,您只能一一添加项:

const menu = _____.getUi()
//   .createMenu("menu title");
// OR
//   .createAddonMenu(); 
entries.forEach(function (menuItem) {
  menu.addItem(menuItem.name, menuItem.functionName);
});
menu.addToUi();

这种方法还可以定义分隔符和子菜单,因此具有一对一的性质。

Spreadsheet#addMenu语法允许直接初始化:

const wb = SpreadsheetApp.getActive();
wb.addMenu("menu title", entries);

这两种路由都要求您的脚本项目在创建Menu之前已定义foo()bar()baz()

还要注意,Apps Script服务器不是持久性的-如果您在onOpen中以编程方式定义了这些功能,则在脚本运行完毕后便不再定义它们,因此每次都需要重新定义它们被访问。

答案 2 :(得分:0)

问题是.addItem('Select Sheet', 'entries').addToUi();,您将字符串 entries 作为第二个参数而不是对象entries传递。

只需将其更改为

.addItem('Select Sheet', entries).addToUi();

它应该可以工作。

实际上,如果您想一次添加多个项目,则需要使用addMenu

因此,它应该是:addMenu('Select Sheet', entries)