我希望在一定的秒数后自动关闭此UiApp:
function showConfirmationDialogue() {
var app = UiApp.createApplication().setHeight('80').setWidth('400');
app.setTitle('test');
var panel = app.createVerticalPanel();
app.add(panel);
var doc = SpreadsheetApp.getActive();
doc.show(app);
// this part doesn't seem to work
Utilities.sleep(5000);
app.close();
return app;
}
谢谢!
答案 0 :(得分:3)
当您调用doc.show(app)
时,会显示您创建的Ui,唯一可以更新或关闭它的方法是使用以return app
结尾的处理函数。
因此,无法从创建UI的同一函数中执行您想要的操作,因为它只返回一次。
我知道只有一个技巧可以达到你想要的功能,使用处理程序触发源,它将使用checkBox widget的“特殊”属性自动调用结束处理函数。这是代码,它使用了一个复选框,您当然可以在最终代码中隐藏它。
function showConfirmationDialogue() {
var app = UiApp.createApplication().setHeight('80').setWidth('400');
app.setTitle('test');
var panel = app.createVerticalPanel();
app.add(panel);
var handler = app.createServerHandler('closeWindow');
var chk = app.createCheckBox('checkBox to set invisible in real function').setValue(false,true).addValueChangeHandler(handler);
app.add(chk);
chk.setValue(true,true)//.setVisible(false);
var doc = SpreadsheetApp.getActive();
doc.show(app);
}
function closeWindow(){
Utilities.sleep(5000);
var app = UiApp.getActiveApplication().close();
return app;
}
您可以使用相同的过程以任何方式修改UiApp实例,更改标签文本,添加小部件......您想要的任何内容。