0

所以我目前正在研究在电子表格中运行的项目结帐系统的 gui。它做了它应该做的一切,并且没有返回任何空值,通常我会对它的结果感到非常满意。

但是,每当我按下提交按钮时,我都会不断收到“遇到错误,发生意外错误”,之后其余代码按预期运行。每隔一段时间我就不会出错,但绝大多数时候它会抛出错误。

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [{name: "Equipment Checkout", functionName: "testing"}];
  ss.addMenu("Equipment Checkout", menuEntries);
}

function testing(){
  var app = UiApp.createApplication();
  app.add(app.loadComponent("ImprovedCheckout"));
  var doc = SpreadsheetApp.getActiveSpreadsheet();
  doc.show(app);
}


function submitted(e){
  Browser.msgBox(e.parameter.requestor);
}

这是我的代码的最简单版本。我正在使用 gui 构建器来创建 gui,并且还使用它来制作事件处理程序。在过去的一个小时里,我一直把头撞在墙上,因为似乎错误发生在提交(e)的第一行之前,但直到我实际单击提交按钮才发生。它不会每次都发生,但在大多数情况下都会发生。

我想我正在错误地处理来自构建器的事件,但是关于该功能的信息还很少。

4

4 回答 4

1

当人们为同一个按钮设置两个处理程序时,我已经看到了这个错误。通常一个通过 GUI 编辑器,另一个通过代码。一个有效,另一个失败。这给人一种疯狂的印象,即它会引发错误但仍然有效。

但是既然你说这是你正在使用的确切代码。您是否在 GUI 构建器上设置了多个处理程序?我不知道是否可能,我从不使用 GUI 构建器。

于 2012-05-15T20:01:33.180 回答
1

弄清楚了!我没有使用提交按钮,而是将其更改为普通的旧按钮。看起来提交按钮正试图同时运行其他东西。

看起来提交按钮有一些额外的规则和要求,但目前,我只是使用普通按钮。

于 2012-05-16T17:37:55.667 回答
0

我运行您提供的代码没有问题。有两件事要提,这是关键:

  1. 确保在代码中使用 HTML 名称为“requestor”的 ServerHandler 添加回调元素。
  2. 添加回调元素时,请使用 GUI 编辑器中的 ID。名称!= ID

在本例中,Name 和 ID 都需要设置。

于 2012-05-15T19:32:04.597 回答
0

使用 getElementbyId('id") 并且 ID 值错误时,我收到了同样的错误消息。脚本本身并没有真正停止,除了这个特定调用应该执行的操作之外,一切看起来都很正常(但这并不总是“显而易见的”)

于 2012-05-16T11:16:16.697 回答