Closing an App Script sidebar containing a form

2019-08-08 15:47发布

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条回答
Explosion°爆炸
2楼-- · 2019-08-08 16:32

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();
};
查看更多
登录 后发表回答