Google apps脚本:如何在对象内部放置处理程序调用的函数?

时间:2014-01-09 16:23:25

标签: event-handling google-apps-script

我创建了一个返回textBox()的对象,它可以根据用户的操作更改其属性。但是,一旦我将函数doChange(e)作为这样的方法放在对象中:

function textBoxExt() {
...
  this.doChange = function(e) {...}
...
}

我的代码返回错误:找不到函数doChange()...

我尝试了不同的方法将函数声明为我的对象中的方法,但它们都没有工作。请告诉我,如何修改下面的代码,将doChange(e)作为方法移动到对象内部。可以通过处理程序调用函数吗?

var style = {
  modified: {color: 'black', backgroundColor: 'yellow', },
};

function textBoxExt() {
  var app = UiApp.getActiveApplication();
  var changeHandler = app.createServerHandler('doChange');
  var box = app.createTextBox();
  box.addValueChangeHandler(changeHandler);

  this.init = function(id) {
    return box.setId(id);
  }
}

var doChange = function(e){
  var app = UiApp.getActiveApplication();
  app.getElementById(e.parameter.source).setStyleAttributes(style.modified);
  return app;
  }

function doGet() {
  var app = UiApp.createApplication();
  app.add(new textBoxExt().init('box1').setText('text1'));
  return app;
}

1 个答案:

答案 0 :(得分:0)

你不能用气体来做这件事。处理程序作为文本传递。除了对象只存在于当前处理程序中,因此它不能从先前的服务器调用附加到对象。