createMenuBar参数处理程序

时间:2012-06-21 15:20:35

标签: google-apps-script

哪些步骤会重现这个问题?

  1. 创建一个MenuBar对象(createMenuBar)
  2. 创建一个服务器处理程序指向menuHandler函数(createServerHandler)
  3. 使用以下参数向MenuBar对象添加项:Name和Handler对象;
  4. 预期产量是多少?你看到了什么呢? 在处理程序函数中,期望参数返回被单击的源对象的名称。现在我看到一个空值。

    在哪个浏览器和& OS? Chrome 19.0.1084.56米 Windows 7 SP1 x64

    请在下面提供任何其他信息。

    function buildMenu() {
        var app = UiApp.createApplication();
    
        var myRootMenu = app.createMenuBar(false);
        var txtTest = app.createTextBox().setText("test").setId("txtTest");
        var myHandler = app.createServerHandler("menuHandler").addCallbackElement(txtTest);
    
        myRootMenu.addItem("File", myHandler );
    
        app.add(myRootMenu);
    
        return app;
    
    }
    
    function menuHandler(e) {
        Logger.log(e);
    }
    

    日志输出是: {参数= NULL}

1 个答案:

答案 0 :(得分:2)

首先:这不是问题跟踪器,请发布您认为有问题的where it should be

第二:如果你没有向serverhandler添加任何callBackElement,它就不能返回任何值。请仔细阅读docs

编辑:关注您的评论:

CallBackElement返回的值链接到其名称,因此您的代码应如下所示:

app.createTextBox().setName('test').setText("test").setId("txtTest");

这是一个有效的例子:

function buildMenu() {
    var app = UiApp.createApplication();
    var myRootMenu = app.createMenuBar(false);
    var txtTest = app.createTextBox().setText("Got it !").setName('test');
    var myHandler = app.createServerHandler("menuHandler").addCallbackElement(txtTest);
    myRootMenu.addItem("File", myHandler );
    app.add(myRootMenu);
  var doc = SpreadsheetApp.getActive();
  doc.show(app);
}
function menuHandler(e) {
    Logger.log(e);
}