我的代码是这样的:
MyCompany = (MyCompany || {});
MyCompany.init = function () {
Logger.log('init');
};
function onOpen() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var menus = [{
name: "Init",
functionName: 'how to call MyCompany.init without creating function?'
}];
spreadsheet.addMenu("Test", menus);
};
是否可以在不创建其他功能的情况下调用MyCompany.init?
答案 0 :(得分:0)
我害怕,这是不可能的。应在functionName
参数中使用的函数名称应在全局范围内定义。尽管该对象是在全局范围内定义的,但您无法在菜单中使用其功能。
官方脚本参考中的未声明(也许是,但它隐藏得非常好),但它可以通过一些简单的测试来证明,比如在不同范围之间移动函数并查看脚本是否仍然有效。
最好的想法,你可以在这里(我想)做的是创建一个全局函数,它会像这样调用MyCompany.init
:
MyCompany = (MyCompany || {});
MyCompany.init = function () {
Logger.log('init');
};
function callInit() {
MyCompany.init();
}
function onOpen() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var menus = [{
name: "Init",
functionName: 'how to call MyCompany.init without creating function?'
}];
spreadsheet.addMenu("Test", menus);
};
这样您的命名空间组织将保持不变。