GAS:遇到错误:发生意外错误

时间:2014-07-31 23:53:53

标签: google-apps-script

我对使用Google Apps脚本上的Ui编码知之甚少。我试图在电子表格中实现一个简单的表单。电子表格做了两件事:

  1. 如果任何字段留空,则应创建警告消息。
  2. 填写完所有字段后,信息应输入电子表格(不会显示在下面的代码中)。
  3. 我的第1步失败了,因为它一直给我一个弹出错误如下:

      

    https://docs.google.com

         

    遇到错误:
      发生意外错误

    我的代码比下面的代码更复杂,但即使这样也会产生同样的错误:

    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);
    }
    

    非常感谢任何帮助。谢谢!

1 个答案:

答案 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
}