-2

哪些步骤将重现该问题?

  1. 创建一个 MenuBar 对象 (createMenuBar)
  2. 创建一个指向menuHandler函数的Server Handler(createServerHandler)
  3. 向 MenuBar 对象添加一个项目,参数为:Name 和 Handler 对象;

什么是预期的输出?你看到了什么呢?在处理程序函数中,该参数应返回被单击的源对象的名称。现在我看到一个空值。

在哪个浏览器和操作系统上?铬 19.0.1084.56 m 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);
}

日志输出为:{parameter=null}

4

1 回答 1

2

首先:这不是问题跟踪器,请将您认为应该出现的问题发布在哪里

第二:如果您不向服务器处理程序添加任何 callBackElement ,则它不能返回任何值。请仔细阅读文档

编辑:按照您的评论:

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);
}
于 2012-06-21T15:34:12.893 回答