ハンドラー関数で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コミュニティと共有しようと思いました。私の観察が正しいかどうか教えてください。バグの場合は、課題追跡システムに投稿したいと思います。