-2

問題を再現する手順は何ですか?

  1. MenuBarオブジェクトを作成する(createMenuBar)
  2. menuHandler関数(createServerHandler)へのサーバーハンドラーポイントを作成します
  3. 次のパラメータを使用して、MenuBarオブジェクトに項目を追加します。NameおよびHandlerオブジェクト。

期待される出力はどれくらいですか?代わりに何が見えますか?ハンドラー関数では、パラメーターがクリックされたソースオブジェクトの名前を返すことが期待されます。これで、null値が表示されます。

どのブラウザとOSで?Chrome 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

まず、これは問題追跡システムではありません。問題であると思われるものを投稿してください。

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 に答える