Her*_*191 2 google-apps-script
我到处搜索,我无法想出解决方案.每次用户点击"提交"(该部分有效)时,我都会尝试使此代码显示图表.问题出在用户点击提交多次一次.它多次显示图表.如何删除最后一个图表并使用新图表进行更新?
function doGet() {
var uiApp = UiApp.createApplication().setTitle("some title");
var grid = uiApp.createGrid(3, 2);
grid.setWidget(0, 0, uiApp.createLabel('Lablel 1'));
grid.setWidget(1, 0, uiApp.createLabel('Lablel 2'));
var panel = uiApp.createVerticalPanel();
panel.add(grid);
var button = uiApp.createButton('submit');
var handler = uiApp.createServerHandler('b');
handler.addCallbackElement(grid);
button.addClickHandler(handler);
panel.add(button);
uiApp.add(panel);
return uiApp;
}
function b(e) {
var app = UiApp.getActiveApplication();
//gets all my chart data
var chart = getchartdata()
//Add chart
app.add(chart)
var uiApp = UiApp.getActiveApplication();
uiApp.close();
return uiApp;
}
Run Code Online (Sandbox Code Playgroud)
最简单的方法是为图表设置一个单独的面板,并在每次添加图表之前清除它.VerticalPanel小部件还有一个可以使用的删除方法.请参阅下面的代码,了解我建议的第一个选项
function doGet(){
/* All your other code here */
uiApp.add(panel);
var chartPanel = uiApp.createVerticalPanel().setId('chartPanel');
uiApp.add(chartPanel);
return uiApp;
}
function b(e) {
var app = UiApp.getActiveApplication();
//gets all my chart data
var chart = getchartdata()
/* Clear chart Panel */
var chartPanel = app.getElementById('chartPanel');
chartPanel.clear();
//Add chart
chartPanel.add(chart)
var uiApp = UiApp.getActiveApplication();
uiApp.close();
return uiApp;
}
Run Code Online (Sandbox Code Playgroud)
PS:我不确定为什么你有两个不同的变量app和uiApp同样的东西.虽然不是你的情况,但它可能导致混乱和问题.