1

2 つのユーザー インターフェイスを作成しました。最初のものを閉じて、次のものをアクティブにするにはどうすればよいですか? Google アプリ スクリプトの下に 2 つの UI を持つことは可能ですか?

私は次のようなものを試しました:

var app = UiApp.getActiveApplication();
app.add(app.loadComponent("APPGui"));
var panel1 = app.getElementById("LoginPanel1");
panel1.setVisible(false);
return app;
4

3 に答える 3

1

これは、 CacheServiceオブジェクトを介してそれらの間の状態/データを維持しながら、次々に表示される3つのダイアログの例です。

(代わりに、UserProperties、ScriptProperties、または非表示フィールドを使用することもできますが、それぞれに独自のスコープがあります...)

うまくいけば、これはUIビルダーの各ダイアログに何が含まれているのかを説明せずに意味があります。

function showDialog1(){
  var app = UiApp.createApplication();
  app.add( app.loadComponent("Dialog1") );
  SpreadsheetApp.getActiveSpreadsheet().show(app);
}

function onDialog1OKButton(e){
  CacheService.getPrivateCache().put("n1", e.parameter.n1);

  var app = UiApp.getActiveApplication();
  var d2 = app.loadComponent("Dialog2");
  app.add(d2);

  SpreadsheetApp.getActiveSpreadsheet().show(app);
}

function onDialog2OKButton(e){
  var c = CacheService.getPrivateCache();
  c.put("n2", e.parameter.n2);

  var app = UiApp.getActiveApplication();
  app.add(app.loadComponent("DialogResult")); 

  var n1 = c.get("n1");
  var n2 = c.get("n2");
  var l = app.getElementById("Label2");
  l.setText( "" + n1 + " + "  + n2 + " = " + (parseInt(n1) + parseInt(n2)) );

  SpreadsheetApp.getActiveSpreadsheet().show(app);
}
于 2012-06-20T09:55:05.550 に答える
1

最も簡単な方法は、おそらく同じ GUI ビルダーで両方のパネルを設計し、2 つの別々のパネルで 1 つを重ねて配置することです。「ログイン パネル」はもう一方の上にあり、アクティブなときにもう一方をマスクします。「非表示」に設定すると、下にあるものが表示されます。ユース ケースに応じて、ログイン パネルはメイン パネルのすべてまたは一部のみを非表示にする場合があります。GUI ビルダーには、どちらが前か後ろかを判断するために必要なすべてのツールがあります。

于 2012-06-19T12:22:52.010 に答える