0

シンプルなアプリ:

function doGet() {
  return(test());
}

function test(){
  var smiley = UiApp.createApplication().setTitle("TT Bomgar Feedback");
  var textIn = smiley.createTextBox().setName("text");
  var textOut = smiley.createLabel().setId("label").setVisible(false);
  var button = smiley.createSubmitButton("Submit");
  var handler = smiley.createServerHandler("handler");
  button.addClickHandler(handler);
  smiley.add(button);
  smiley.add(textIn);
  smiley.add(textOut);
  return(smiley);
}

function handler(e){
  app = UiApp.getActiveApplication();
  var text = e.parameter.text;
  app.getElementById("label").setVisible(true).setText(text);
  return(app);
}

ハンドラー関数では、var textは常にundefinedです。これは、以下が返されることを意味します。

ここに画像の説明を入力してください

したがって、「一部のテキスト」の代わりに未定義が出力されます。

テスト関数でテキストボックス要素の名前を正しく設定したので、理由はわかりません...

どんな援助も大歓迎です。

4

2 に答える 2

3

ハンドラーにcallBackElemntを追加して、その値がハンドラー関数に渡されるようにする必要があります。通常の方法では、他のすべての要素を含む最上位の要素を追加するだけです。ただし、値を渡したいすべての要素を追加することもできます。

変更されたスクリプト

var handler = smiley.createServerHandler("handler");
handler.addCallbackElement(textIn);
button.addClickHandler(handler);
于 2012-11-26T10:10:10.007 に答える
1

サーバーハンドラーにコールバック要素を追加する必要があります。

...
var handler = smiley.createServerHandler("handler");
handler.addCallbackElement(textIn);
button.addClickHandler(handler);
...

https://developers.google.com/apps-script/class_serverhandler#addCallbackElement

于 2012-11-26T10:06:30.773 に答える