我对使用Google Apps脚本上的Ui编码知之甚少。我试图在电子表格中实现一个简单的表单。电子表格做了两件事:
我的第1步失败了,因为它一直给我一个弹出错误如下:
遇到错误:
发生意外错误
我的代码比下面的代码更复杂,但即使这样也会产生同样的错误:
function a(e) {
var doc = SpreadsheetApp.getActiveSpreadsheet();
var app = UiApp.createApplication().setTitle('New Name');
var form = app.createVerticalPanel().setId('form');
var grid = app.createGrid(2, 3).setId('grid');
grid.setWidget(0, 0, app.createLabel('Name: '));
grid.setWidget(0, 1, app.createTextBox().setName('name'));
grid.setWidget(0, 2, app.createHTML().setId('nameRequired'));
grid.setWidget(1, 0, app.createButton('Submit')
.addClickHandler(app.createServerClickHandler('b')
.addCallbackElement(grid)));
form.add(grid);
app.add(form);
doc.show(app);
}
function b(e) {
var app = UiApp.getActiveApplication();
if (e.parameter.name == '') app.getElementById('nameRequired')
.setHTML('<font color=\'red\'>* required</font>');
SpreadsheetApp.getActiveSpreadsheet().show(app);
}
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
将处理程序函数中的最后一行更改为return app;
当您在处理程序函数中重用SpreadsheetApp.getActiveSpreadsheet().show(app);
时,实际上是在尝试将相同的UiApp实例(使用getActiveApplication()
调用)添加到电子表格中,这就是产生错误的原因。
以下代码:
function b(e) {
var app = UiApp.getActiveApplication();
Logger.log(e.parameter.name);
if (e.parameter.name == '') app.getElementById('nameRequired')
.setHTML('* required').setStyleAttributes({'color':'red','fontWeight':'bold'});// use as many pairs you need in the attributes object
return app;//update Ui
}