カスタム スプレッドシート メニューを介して展開される 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
助けてくれてありがとう!!