加载UiApp后调用函数(Javascript onLoad等效)

时间:2013-02-09 06:25:45

标签: google-apps-script

我有一个UiApp表单,需要一些电子表格数据(减慢检索)。我想要实现的是像往常一样加载视图,并在显示之后做一些事情,比如调用获取数据的服务器处理程序并在完成后更新我的视图。这可能吗?

我环顾四周但我没有找到任何东西。

根据this,“函数doGet(e)是onLoad的GWT等价物”,但它不是我的情况,因为我想发布页面而只有做缓慢的部分...

2 个答案:

答案 0 :(得分:4)

然后我们可以使用

Stumbled on this来实现伪onLoad事件。

复选框上的setValue函数有an optional parameter来触发valueChanged处理程序。因此,您可以以编程方式触发valueChanged处理程序,它允许您在同时调用处理程序时返回应用程序(最初加载它)。

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

  var label = app.createLabel('Loading the data from the spreadsheet.')
                 .setId('statusLabel')
  app.add(label);

  var handler = app.createServerHandler('loadData');
  var chk = app.createCheckBox('test').addValueChangeHandler(handler).setVisible(false).setValue(true,true).setId('chk');
  app.add(chk);

  return app;
}

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

  Utilities.sleep(3000); //placeholder for some function that takes a long time.

  var label = app.getElementById('statusLabel');
  label.setText("Loaded the data from the spreadsheet");

  return app;
}

答案 1 :(得分:0)

其他几个小部件有setValue(value, fireEvents)个方法,例如。 TextBoxPasswordTextBox等。CheckBox小部件在实现此技术时似乎没有任何独特之处。