Auto close modal dialog - After server code is done, close dialog in Google Spreadsheet
The flow of events could be:
- User does something
- Triggers modal dialog
onLoad
event of modal dialog triggers client side code- Client side
google.script.run
triggers a server side.gs
function to run - Server function in
.gs
script file runs. - database updated from server.
- server code sends a return value back to dialog
- "withSuccessHandler()" in dialog detects the return from the server
- "withSuccessHandler()" runs and closes the dialog using
google.script.host.close();
You'll need a <script>
tag in your modal dialog.
<script>
window.onload = function() {
//console.log('window.onload ran!');
google.script.run
.withSuccessHandler(closeDialog)
.theFunctionNameToUpdateDatabase()
};
window.closeDialog = function() {
google.script.host.close();
};
</script>
Right now you are using:
HtmlService.createHtmlOutput(the HTML here)
You could create the HTML from a file instead:
HtmlService.createHtmlOutputFromFile(filename)
//show dialog
var output = HtmlService.createHtmlOutput('<b>Please wait...</b>');
SpreadsheetApp.getUi().showModalDialog(output, 'Saving...');
some code
//close dialog
var output = HtmlService.createHtmlOutput('<script>google.script.host.close();</script>');
SpreadsheetApp.getUi().showModalDialog(output, 'Loading...');
*optional
ui.alert("Saved Successfully!")