2

スプレッドシートデータを必要とするUiAppフォームがあります(取得に時間がかかります)。私が達成したいのは、通常どおりビューをロードし、表示された後、データを取得し、完了時にビューを更新するサーバーハンドラーを呼び出すようなことを行います。それは可能ですか?

周りを見回しましたが、何も見つかりませんでした。

これによると、「関数doGet(e)はGWTでonLoadに相当します」が、私の場合はそうではありません。ページを支払い、遅い部分だけを実行したいからです...

4

2 に答える 2

4

これに遭遇し、疑似onLoadイベントを実装するために使用できました。

チェックボックスのsetValue関数には、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;
}
于 2013-02-09T16:52:56.877 に答える
0

他のいくつかのウィジェットにはsetValue(value, fireEvents)メソッドがあります。TextBox、など。この手法を実装する際のウィジェットにPasswordTextBoxは何もユニークなものはないようです。CheckBox

于 2014-08-08T10:43:24.613 に答える