Google脚本:从文本框中检索数据

时间:2014-06-30 03:35:51

标签: textbox google-apps-script buttonclick

我第一次尝试使用Google App脚本,并希望通过单击按钮从文本框中获取数据(在第二个函数中输入变量TC)。我试图从谷歌和网上跟踪,但似乎所有使用的功能已经退役。任何人都可以给我一些指导,我没有任何UI经验,并且已经在这个项目工作了几个小时。

请参阅下面的简化代码。

谢谢,

约翰

function doGet() {
  var app = UiApp.createApplication().setTitle('Richardson-Dushmann Calculator');

  var Temperature  = app.createTextBox().setName("Temperature");

  var button = app.createButton('Calculate').setId('Calculate');
  var handler = button.addClickHandler(app.createServerHandler("handlerFunction"));

  var inputGrid = app.createGrid(1, 3);
  var mypanel = app.createVerticalPanel();  

      inputGrid.setWidget(0, 0, app.createLabel('T = '));
      inputGrid.setWidget(0, 1, Temperature);
      inputGrid.setWidget(0, 2, app.createLabel(' \xB0C'));

      mypanel.add(inputGrid);
      mypanel.add(button);

  app.add(mypanel);
  return app;

}

function handlerFunction(e) {
  var app = UiApp.getActiveApplication();
  var TC = e.parameter.Temperature;

   return app;
 }

1 个答案:

答案 0 :(得分:1)

您必须告诉处理程序应将哪个窗口小部件值传输到函数。

您可以添加textBox,但最好添加最高级别的父窗口小部件,以备日后需要其他值时使用。

使用handler.addCallBackElement(widget)来实现这一目标,documented here

编辑以下评论:

完整代码

function doGet() {
  var app = UiApp.createApplication().setTitle('Richardson-Dushmann Calculator');

  var Temperature  = app.createTextBox().setName("Temperature");

  var inputGrid = app.createGrid(1, 3);
  var mypanel = app.createVerticalPanel();  

  var button = app.createButton('Calculate').setId('Calculate');
  var handler = button.addClickHandler(app.createServerHandler("handlerFunction").addCallbackElement(mypanel))


      inputGrid.setWidget(0, 0, app.createLabel('T = '));
      inputGrid.setWidget(0, 1, Temperature);
      inputGrid.setWidget(0, 2, app.createLabel(' \xB0C'));

      mypanel.add(inputGrid);
      mypanel.add(button);

  app.add(mypanel);
  return app;

}

function handlerFunction(e) {
  var app = UiApp.getActiveApplication();
  var TC = e.parameter.Temperature;

   return app.add(app.createLabel(e.parameter.Temperature));// add the returned value in the app to check it comes back in the handler
 }

test here