1

「TypeError:未定義からプロパティ「パラメータ」を読み取れません」というメッセージが表示されます。e.parameterプロパティをログに記録しようとするとき。(contactMe()関数に次の行を挿入しました)

Logger.log(e.parameter.textBox);
Logger.log(e.parameter);

それ以外の場合、スクリプトは正常に機能します。

function doGet() {
  var app = UiApp.createApplication();

  var mainPanel = app.createVerticalPanel().setId('mainPanel');
  app.add(mainPanel);

  mainPanel.add(app.createLabel('Enter your email to sign up'));

  var form = app.createHorizontalPanel();
  mainPanel.add(form);

  var email = app.createTextBox().setName('textBox').setId('textBox');
  form.add(email);

  var button = app.createButton('Sign up');
  form.add(button);

  var info = app.createLabel().setVisible(true).setId('info');
  mainPanel.add(info);

  //handler
  var handler = app.createServerHandler('contactMe').addCallbackElement(mainPanel);
  button.addClickHandler(handler);

  return app;
}

function contactMe(e){
 var app = UiApp.getActiveApplication();

 Logger.log("testing");
 Logger.log(e.parameter);
 Logger.log(e.parameter.textBox);

 app.getElementById('textBox').setValue('').setStyleAttribute("color", "black");
 app.getElementById('info').setText('Thank you!').setStyleAttribute("color", "black");

 var ss = SpreadsheetApp.openById('0AqKSxC6f0Cc7dF9aT1lUeXFEcnR2eUFYRGs4Y1NiVVE')
                        .getSheets()[0];
 var range = ss.getRange(ss.getLastRow()+1, 1, 1, 2);

 var values = [[new Date(),e.parameter.textBox]];  
 range.setValues(values); 

 return app;   
}
4

3 に答える 3

0

箱から少し外れていますが、うまくいくと思います:

function doGet() {
  var app = UiApp.createApplication();

  var mainPanel = app.createFormPanel;
  app.add(mainPanel);

  mainPanel.add(app.createLabel('Enter your email to sign up'));

  var form = app.createHorizontalPanel();
  mainPanel.add(form);

  var email = app.createTextBox().setName('textBox').setId('textBox');
  form.add(email);

  var button = app.createSubmitButton('Sign up');
  form.add(button);

  var info = app.createLabel().setVisible(true).setId('info');
  mainPanel.add(info);

  return app;
}

function doPost(e){
 var app = UiApp.getActiveApplication();

 //Logger wont work in uiApps
 //in Form panels the UI is cleared so you want to write a thank you note
 app.add(app.createLabel("Thanks"));


 var ss = SpreadsheetApp.openById('0AqKSxC6f0Cc7dF9aT1lUeXFEcnR2eUFYRGs4Y1NiVVE')
                        .getSheets()[0];
 var range = ss.getRange(ss.getLastRow()+1, 1, 1, 2);

 var values = [[new Date(),e.parameter.textBox]];  
 range.setValues(values); 

 return app;   

よろしくお願いいたします。

トーマス・ヴァン・ラトゥム

于 2012-09-25T20:10:25.680 に答える