在小部件上使用TAGS

时间:2012-08-06 13:42:07

标签: google-apps-script

我正在尝试在UI小部件中使用标记,但标记值在处理函数中不可用(返回'null')。

它是否应该像那样工作(在这种情况下,它对我来说没用)或者我做错了什么?如果有人对TAGS有任何经验,我会很感激任何建议; - )

以下是我用于测试的代码:

function doGet(e) {
  var app = UiApp.createApplication();
  var panel = app.createVerticalPanel();
  var lbl = app.createTextBox().setWidth('400').setId('lbl');
  lbl.setText('empty').setTag('tag value');
  lbl.setText('original value = '+lbl.getTag());// this line to check that setTag / getTag is working as it should in the same function
  app.add(panel.add(lbl));
  var CH = app.createServerHandler('showtag').addCallbackElement(panel);
  lbl.addClickHandler(CH)

  return app;
}


function showtag(){
var app = UiApp.getActiveApplication();
var lbl = app.getElementById('lbl')
lbl.setText('new value = '+lbl.getTag());
return app
}

可以测试with this link

编辑:我在代码中添加了一行,用于在doGet函数中读取和写入标记,只是为了测试......

编辑2:Srik的解决方案,简单如下:

function showtag(e){
var app = UiApp.getActiveApplication();
var lbl = app.getElementById('lbl')
lbl.setText('from showtag value = '+e.parameter.lbl_tag);
return app
}

1 个答案:

答案 0 :(得分:4)

行。这里有一个小怪癖。在处理程序中,您可以使用以下方法访问标记值

function doGet(){
   ....
   var lbl = app.createTextBox().setWidth('400').setId('lbl');
   lbl.setText('empty').setTag('tag value');
   ....
}

function showtag(e){
  var tag = e.parameter.lbl_tag; /* I'm not sure if it us Tag or tag */
  ....
}