Ниже приведены примеры трех диалоговых окон, отображаемых один за другим, поддерживающие состояние/данные между ними через объект CacheService.
(Вы можете использовать UserProperties, ScriptProperties или даже скрытое поле в качестве альтернативы, каждый из них имеет свою собственную сферу, хотя ...)
Надеется, что это имеет смысл, не объясняя, что содержит каждый диалог в UI Builder.
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);
}
спасибо, я сделаю это. странно, что мы можем сделать много ui .. – Vincent
на самом деле это больше похоже на один пользовательский интерфейс с модульным содержимым, так как экземпляр UiApp один и тот же. –