3

私は google-apps-script を初めて使用します。このエラー「TypeError: 関数 getValue がジェネリック オブジェクトに見つかりません」というエラーが発生し、理由がわかりません。

コードは次のとおりです。

function doGet(e) {


  var app = UiApp.createApplication();
  app.setTitle("My first application");

  var vPanel = app.createVerticalPanel();

  var hPanel3 = app.createHorizontalPanel();
  hPanel3.add(app.createLabel("Text"));
  var textArea = app.createTextArea().setId('theText').setName('theText');
  //textArea.setName("textArea");

  hPanel3.add(textArea);
  vPanel.add(hPanel3);

  var hPanel4 = app.createHorizontalPanel();
  var button = app.createButton("Save");
  var handler = app.createServerHandler('onClick');
  handler.addCallbackElement(textArea);
  button.addClickHandler(handler);
  hPanel4.add(button);
  vPanel.add(hPanel4);

  var label = app.createLabel().setId('label').setText('tata');
  //label.setName("label");

  var hPanel5 = app.createHorizontalPanel();
  hPanel5.add(label);
  vPanel.add(hPanel5);

  app.add(vPanel);

  return app;

}

function onClick(e) {
  var app = UiApp.getActiveApplication();
  // ERROR occurs here when the button is clicked
  var text = app.getElementById('theText').getValue();

  Logger.log(text);

  app.getElementById('label').setValue(e.parameter.textArea + ' toto');
  //label.setText(textArea.getValue());

  return app;
}

textArea の名前と ID を既に変更しましたが、何も機能しません。

ご協力いただきありがとうございます!

チュン

4

3 に答える 3

4

TextAreaクラスにはメソッドがありませんgetValue。その値は、パラメーターとしてハンドラーに渡されます。これがどのように機能するかを示すサンプルです。

function doGet(e) {
   var app = UiApp.createApplication();
   var panel = app.createFlexTable();
   panel.setWidth('100%');
   var btn = app.createButton().setId('btn').setText('Click Me');
   var textArea = app.createTextArea().setName('textArea').setValue('Text');
   var handler = app.createServerHandler('onBtnClick');
   handler.addCallbackElement(panel);
   btn.addClickHandler(handler);   
   panel.setWidget(0, 0, btn);
   panel.setWidget(1, 0, textArea);
   app.add(panel);
   return app;
}

function onBtnClick(e) {
  var app = UiApp.getActiveApplication();
  var btn = app.getElementById('btn');
  var textAreaValue = e.parameter.textArea;
  btn.setText(textAreaValue);
  return app;
}
于 2012-07-05T11:57:39.767 に答える
2

変化する

var text = app.getElementById('theText').getValue();

var text = e.parameter.theText;

e はフォームの値
であり、setName で固定された名前を使用して、変数で取得する e のパラメーターを選択します

于 2012-07-05T11:46:29.440 に答える
1

textArea のドキュメントを参照すると、 textAreaのようなメソッドはありませんgetValue()。カートマンが答えたように、textArea の名前setValue()をパラメーターとして使用する callbackElement を介して値を取得できます (他の何かを使用したい場合を除き、ID は必要ありません)。

于 2012-07-05T11:57:33.813 に答える