1

ハンドラー関数でtrycatchブロックを使用することを考えたアプリを開発していますが、「エラーが発生しました:予期しないエラーが発生しました」というエラーが表示されます。コードは正しいようですが、機能していません。エラーはブロック内の場合にのみ発生app.getElementById('elementId')しますtry

これが私のコードです。

function doGet(e) {
  var app = UiApp.createApplication();
  var hPanel = app.createHorizontalPanel();
  app.add(hPanel);
  var handler = app.createServerHandler('handleOpenClose_');
  var btn1 = app.createButton('Open Item').setId('openBtn').addClickHandler(handler);
  var btn2 = app.createButton('Close Item').setId('closeBtn').addClickHandler(handler);
  hPanel.add(btn1).add(btn2);
  return app;
}

function handleOpenClose_(e){
  var source = e.parameter.source;
  var app = UiApp.getActiveApplication();
  var itemPanel;
  try{//check if itempanel exists
    var itemPanel = app.getElementById('itemPanel');
  }
  catch(e){// if it does not exists, create it
    var itemPanel = app.createVerticalPanel().setId('itemPanel');
    app.add(itemPanel);
    for(var i=0; i<10; i++){
      itemPanel.add(app.createLabel('Item '+i));
    }
  }

  if(source == 'openBtn'){itemPanel.setVisible(true)}
  else if(source == 'closeBtn'){itemPanel.setVisible(false)}

  return app;
}

同じことを達成する方法は他にもあると思いますが、この観察結果をgoogle-apps-scriptコミュニティと共有しようと思いました。私の観察が正しいかどうか教えてください。バグの場合は、課題追跡システムに投稿したいと思います。

4

1 に答える 1

1

This issue has been reported to Google quite a while back as Issue 592. Unfortunately, when an item with a given id doesn't exist, GAS shows an Unexpected error alert box instead of throwing an exception to the code.

于 2012-11-07T08:30:57.513 に答える