问题
I have a Google Apps Script running a html-form in the sidebar. The form-answers are used to generate documents. My problem is that I want to close the sidebar when the program has completed (after clicking Submit).
<form id="myForm">
<input name="name" type="text"/>
<input type="button" value="Submit" onclick="google.script.run.withFailureHandler(fail).
withSuccessHandler(google.script.host.close()).
doStuff(this.parentNode)"/>
</form>
The program runs as intended if I remove the withSuccessHandler, otherwise it doesn't. Are there a way for me to close the sidebar at the end of doStuff()?
Documentation: The sidebar can close itself either by calling google.script.host.close() in the client side of an HTML-service interface or UiInstance.close() in a UI-service interface. The sidebar cannot be closed by other interfaces, only by the user or itself.
UiInstance is marked Deprecated.
回答1:
The onclick()
attribute can have multiple functions in it. You can put the google.script.host.close()
statement after all the code. Just make sure to put a semi-colon at the end of all the google.script.run
stuff:
<input type="button" value="Submit"
onclick="google.script.run.withFailureHandler(fail)
.doStuff(this.parentNode); google.script.host.close();"/>
Your packing a lot of code into the onclick()
attribute. You could have a separate function:
onclick="serverCall();"
window.serverCall = function() {
google.script.run
.withFailureHandler(fail)
.doStuff(this.parentNode);
google.script.host.close();
};
来源:https://stackoverflow.com/questions/34179339/closing-an-app-script-sidebar-containing-a-form