Google App脚本中的setName与setId

时间:2013-06-23 11:19:56

标签: google-apps-script

在'google script'中,在触发事件(按钮点击)时,我正在尝试更改文本框的名称和ID。以下是简化代码:

    function addRow(e){
      var app = UiApp.getActiveApplication();
      app.getElementById('tbox')
         .setId('txt1')
         .setName('txt1');
    }

现在,setId正在运行,但是setName给我一个错误。有什么东西我显然不见了吗?

1 个答案:

答案 0 :(得分:0)

从快速测试看来,虽然如果单独使用它不会引发错误,但是无法更改元素的id,如此小测试所示:

function doGet() {
  var app = UiApp.createApplication().setTitle('Button Test');
  return app.add(app.createTextBox().setId('tbox').setName('tbox').setText('tbox')
                 .addKeyPressHandler(app.createServerHandler('inspectBox'))).add(
    app.createButton('Change').addClickHandler(app.createServerHandler('btnClick')));
}

function inspectBox(e) {
  var p = e.parameter;
  var app = UiApp.getActiveApplication();
  return app.add(app.createLabel('id: '+p.source)).add(
    app.createLabel('name: '+(p.tbox ? 'tbox' : p.txt1 ? 'txt1' : 'not found')));
}

function btnClick() {
  var app = UiApp.getActiveApplication();
  app.getElementById('tbox').setId('txt1');
  //app.getElementById('tbox').setName('txt1');
  return app;
}

稍后,如果您对setId行发表评论并取消注释setName行,则在文本框中输入字符,您会看到名称发生变化。如果您继续使用元素setName,则setText调用可以正常工作。对于setId,情况并非如此,如果您对元素进行任何尝试,则会失败。

无论如何,正如其他人评论的那样,你有这样的要求确实很奇怪。我想你应该找到另一种方式(可能是更好的方式)来做你想要的(你没有描述)。