0

カスタム スプレッドシート メニューを介して展開される UiApp を作成しようとしています。私の問題は、サーバー ハンドラーが呼び出されたときに、元の Ui のコードを含む "main" または "doGet" 関数に戻る良い方法がないように思われることです。

通常、サーバー ハンドラから戻るときは、次のものが使用されます。

app.close();
return app;

ただし、スプレッドシートに Ui をデプロイする場合は、Ui を表示するために次を使用することをお勧めします。

var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.show(app);

見つけたように見える 2 つのメソッドのすべての組み合わせを試してみましたが、ハンドラーが呼び出されるかクラッシュすると Ui が閉じます。

助けてください!私は以下のコードを含めました:

function onOpen() { //call to invoke the menu when opening the spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var reportMenu = [{name: "Edit Reports", functionName: "deploy"}];
ss.addMenu("Reports", reportMenu);
}

function deploy() {
var app = UiApp.createApplication();
var form = app.createFormPanel();
var flow = app.createFlowPanel();



//creating handlers
var LB1handler = app.createServerClickHandler('checkSelect_');
LB1handler.addCallbackElement(flow);

//creating the flow...
flow.add(app.createLabel("Reports Interface:").setId("l1"));
flow.add(app.createLabel("What would you like to do?"));
flow.add(app.createListBox().addItem("Create a new report").addItem("Edit an Existing Report").setName("LB1"));
flow.add(app.createSubmitButton('Submit').addClickHandler(LB1handler));
form.add(flow);
app.add(form);

var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.show(app);

}

function checkSelect_(e) {
var app = UiApp.getActiveApplication();
//do some stuff to the app
//but how to get back??????
//return app;
// var ss = SpreadsheetApp.getActiveSpreadsheet();
// ss.show(app);
}
//end code

助けてくれてありがとう!!

4

1 に答える 1