GAS标签可见性

时间:2013-02-11 23:11:52

标签: google-apps-script

此代码应该更改标签可见性状态...但它喜欢保持隐藏状态。你可以看到我试图用两种不同的方式定义 rlabel 。使用注释的代码//时出现未定义的错误。我知道它正在执行else语句。谢谢你的时间......

function showDialog()  {
var app = UiApp.createApplication();    
var panel = app.createHorizontalPanel();
panel.add(label3);

...
var label3 = app.createLabel("Bad PIN");
label3.setId('BADPIN').setVisible(false);
app.add(panel);
var doc = SpreadsheetApp.getActive();
doc.show(app);
...
    }

好的,所以对话框参数传递给了这个函数:

function respondtoSubmit(e) {
  var app = UiApp.getActiveApplication();
  ...
  if (loftExists(PINValue)==true) {
     ...
     return app.close(); }
  else {  //show bad pin label 
     var rlabel =app.getElementById('BADPIN');
     rlabel.setVisible(true);        
     Logger.log ("rlabel.setVisible(true); just called");
     }
}

3 个答案:

答案 0 :(得分:1)

您在代码中执行此操作的方式,label3.setId('BADPIN');以及服务器访问者通过var rlabel =app.getElementById('BADPIN');访问它的方法是正确的方法。另一种方式,通过e.parameter传递它,只能用于访问窗口小部件值,而不是用于操作窗口小部件本身,并且仅适用于具有setName-Method的那些元素,而不是标签(见docu of addCallbackElement)。

因此,您未显示的代码部分应该在showDialog():

  app.add(label3);

而且,只是为了确认处理程序中的else-part被执行,添加一个Logger输出:

else {  //show bad pin label 
  var rlabel =app.getElementById('BADPIN');
  rlabel.setVisible(true); 
  Logger.log ("rlabel.setVisible(true); just called");
}

检查它,如果它仍然不起作用,发布你的整个代码,那么某处必须有另一个错误。

答案 1 :(得分:0)

假设您的UI中的某个处理程序调用{​​{1}},则必须在函数末尾respondtoSubmit(e)。这就是GAS知道如何向用户更新视图。

答案 2 :(得分:-1)

您需要app.createLabel('Bad Pin').setName('BADPIN')才能访问表单提交上的标签。设置ID是不够的。