1

「Googleスクリプト」では、イベントのトリガー(ボタンクリック)で、テキストボックスの名前とIDを変更しようとしています。以下は簡略化されたコードです。

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

現在、setId は機能していますが、setName でエラーが発生しています。明らかに欠けているものはありますか?

4

1 に答える 1

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、テキスト ボックスに char を入力すると、名前が変わることがわかります。そして、setNameたとえばsetText. setId要素で何かをしようとすると失敗します。

とにかく、他の人がコメントしたように、そのような要件があるのは本当に奇妙です。あなたがやりたいことをする別の方法(おそらくもっと良い方法)を見つけるべきだと思います(あなたが説明していません)。

于 2013-06-23T15:25:22.017 に答える