我开发了从电子表格中运行的应用程序。 它有一个格式化的屏幕,即。 doc.show(应用程序)。 有一个质量变化的功能。 我想提示用户“你确定?确定要继续”。
理想的解决方案将是一个弹出窗口的形式与“OK继续”响应。
我无法找到一个方法来提示用户接受不同时取下来格式化屏幕的响应。
我知道必须有一个简单的方法来做到这一点。 我搜索这个论坛和其他人,但无法找到一个适用于谷歌电子表格的解决方案。
我开发了从电子表格中运行的应用程序。 它有一个格式化的屏幕,即。 doc.show(应用程序)。 有一个质量变化的功能。 我想提示用户“你确定?确定要继续”。
理想的解决方案将是一个弹出窗口的形式与“OK继续”响应。
我无法找到一个方法来提示用户接受不同时取下来格式化屏幕的响应。
我知道必须有一个简单的方法来做到这一点。 我搜索这个论坛和其他人,但无法找到一个适用于谷歌电子表格的解决方案。
当使用GUI Builder中,我发现了一个很简单的解决方案是创建一个面板,实际上是掩盖整个UI标签(或部分的话),这是通常不可见。 当我使其可见我可以点击它,它再变成无形的,我回到了标准的UI。 它使用在GUI生成器,以便掩蔽是非常容易(一种多层设计的),以向后和向前移动的元件的能力。 我想同样的行为与脚本定义的UI实现的,但我不知道如何...关心,塞尔
编辑:对于信息:我刚刚成立的接口使用这种技术,我注意到,已不可见的面板必须使用他们的所有元素,否则他们再次出现空恢复一起。 这里使用Clienthandlers是两个面板和两个按钮来完成这项工作的例子:
var panhandler0 = app.createClientHandler()
.forTargets(panel1).setVisible(false);// hide panel1 when button 'ENTER'on panel1 is pressed
enter.addClickHandler(panhandler0);
var panhandler1 = app.createClientHandler()
.forTargets(panel2,msg,grid2).setVisible(true);// show panel2 when button 'ENTER' on panel1 is pressed
enter.addClickHandler(panhandler1);
var panhandler2 = app.createClientHandler()
.forTargets(panel2,msg,grid2).setVisible(true);// re-show panel2 when button 'retry'on panel2 is pressed
retry.addClickHandler(panhandler2);
var panhandler3 = app.createClientHandler()
.forTargets(panel2).setVisible(false);// hide panel2 when button 'retry'on panel2 is pressed
retry.addClickHandler(panhandler3);
var panhandler4 = app.createClientHandler()
.forTargets(panel1,txt,grid,hpanel).setVisible(true);// re-show panel1 when button 'retry'on panel2 is pressed
很好地工作!
您可以使用Browser.MsgBox(),并添加按钮到它的用户确认。 Refrence URL https://developers.google.com/apps-script/class_browser
这的确不是一件容易的事。 你将不得不使用自己的GUI(格式化屏幕),显示该消息。 这样,您就可以重新恢复你的GUI的状态。 下面是一个例子:
function uiTest() {
var app = UiApp.createApplication().setTitle("UI");
app.add(app.createGrid(1,1).setId('main'));
createGUI(app,{});
SpreadsheetApp.getActive().show(app);
}
function createGUI(app,p) {
var panel = app.createVerticalPanel();
var handler = app.createServerHandler('handler').addCallbackElement(panel);
panel.add(
app.createTextBox().setName('text').setId('text').setText(p.text ? p.text : "")).add(
app.createButton('Do it').addClickHandler(handler));
app.getElementById('main').setWidget(0,0, panel);
}
function handler(e) {
var app = UiApp.getActiveApplication();
var hidden = app.createHidden('oldValues', JSON.stringify(e.parameter));
app.getElementById('main').setWidget(0,0, app.createVerticalPanel().add(
hidden).add(
app.createLabel("Question message")).add(
app.createButton('Ok').addClickHandler(app.createServerHandler('after').addCallbackElement(hidden))));
return app;
}
function after(e) {
var app = UiApp.getActiveApplication();
createGUI(app,JSON.parse(e.parameter.oldValues));
return app;
}
难度会真的取决于你需要多少国家挽回。 如果没有,那么它的很多,轻松了许多。 在这个例子中,我恢复文本框的值。 您可以在任何类型有看到,它会弹出后在那里。