google apps脚本- GAS -在运行时发现信息



由于GAS文档实际上很糟糕,我想我至少可以尝试发现传递给even处理程序的参数的信息。这个简单的例子展示了我要做的事情。

MyGui是使用Gui-builder构建的。它包含一个按钮- btn,它有一个点击回调- btn_click它还包含一个TextArea - txtArea1

简单

function doGet() {
  var app = UiApp.createApplication();
  app.add(app.loadComponent("MyGui"));
  return app;
}
function btn_click(e) {
  var app = UiApp.getActiveApplication();
  var ta = app.getElementById('txtArea1');
  if(!e)
  {
    ta.setText('null object');
  }
  else
  {
    ta.setText(e.toDebugString());
  }
  return app;
}
我真傻!由于文档反复声明GAS组件构建在GWT之上,并且GWT是基于Java的,所以我认为一切都是Java .lang。对象,我应该能够调用toDebugString()来找到至少一些关于传递给处理函数的对象的信息。

对不起,我几乎要放弃使用GAS了,现在它只是一个玩具,我没有时间玩,我实际上有工作要做

我记得有一个库SmartDebug,它允许在ui中记录对象。添加库并尝试如下:

function doGet() {
var app = UiApp.createApplication();
  SmartDebug.enable(true);
  SmartDebug.addLogWidgetToApplication();
  app.add(app.loadComponent("MyGui"));
  return app;
}
function btn_click(e) {
   var app = UiApp.getActiveApplication();
  if(!e) {
    SmartDebug.logMessage('null');
  } else {
    SmartDebug.logObject(e,'event');
  }
  return app;
}

这是我得到的:

11:19:55: event.parameter.clientY: 161
11:19:55: event.parameter.clientX: 143
11:19:55: event.parameter.eventType: click
11:19:55: event.parameter.ctrl: false
11:19:55: event.parameter.meta: false
11:19:56: event.parameter.source: Button1
11:19:56: event.parameter.button: 1
11:19:56: event.parameter.alt: false
11:19:56: event.parameter.screenY: 270
11:19:57: event.parameter.screenX: 143
11:19:57: event.parameter.y: 18
11:19:57: event.parameter.shift: false
11:19:57: event.parameter.x: 92

UiApp的客户端是GWT小部件。我们没有在任何地方声明服务器端是由GWT Java对象组成的(事实并非如此),基于它们的工作方式,这样说也没有意义。服务器对象只不过是对客户端对象的引用——您可以使用这些引用来关联命令,然后将这些引用发送给客户端。没有调试信息,因为服务器"小部件"除了为其存储命令的客户端小部件的id之外没有其他信息。

您是否在GUI Builder中为按钮关联了回调元素?如果你把按钮放在FormPanel中,FormPanel的所有字段都作为参数提交,如果它是一个简单的按钮,你必须添加回调元素来获取事件参数,这是在GUI Builder中,在事件下的小白框,以触发事件。

您可以使用标准的Javascript toSource方法来调试一些对象。如果你在创建一个新的web应用程序脚本时调试默认的示例代码,这就是toSource给你的:

({参数:{clientY:"22",clientX:"17",eventType:"点击",ctrl:"false",元:"false",来源:"u29169455861"按钮:"1",alt:"false",screenY:"148",screenX:"381",y:"18"转变:"false",谢:"13"}})

最新更新