Close dialog when both dialog and custom sidebar are present

六月ゝ 毕业季﹏ 提交于 2020-02-08 03:18:16

问题


I'm having trouble with the google.script.host.close() command in that it is closing my sidebar rather than the dialog.

function clickWeek() {
  setWeekColor('week', '#7FFF00');
  setMonthColor('month', '#d6d6c2');
  setPressColor('press', '#d6d6c2');
  setAllDataColor('allData', '#d6d6c2');
  google.script.run.withSuccessHandler(google.script.host.close).weekAheadCreate();
}

The dialog is opened from the top of the weekAheadCreate() fucntion as per below:

var htmlOutput = HtmlService
     .createHtmlOutput('<p>Please wait a moment...</p>')
     .setWidth(250)
     .setHeight(80);
 SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Loading');

Any ideas how I can force the google.script.host.close() to act on the dialog rather than the sidebar?


回答1:


The close() method closes the current dialog/sidebar, and asuming the clickWeek() is in your sidebar, it will close it instead of the dialog. You need to run the close() method inside the dialog.

How about you fire your server-side function when the dialog is created and when the withSuccessHandler() detects a successful return then it closes the dialog using close().

You will need to use createHtmlOutputFromFile when creating the dialog insted of createHtmlOutput and inside your html use the <script> tag. Here's an example:

code.gs

function createDialog(){
  var htmlOutput = HtmlService
       .createHtmlOutputFromFile('dialog')
       .setWidth(250)
       .setHeight(80);
   SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Loading');
}

function doBusyStuff(){
  // Busy stuff
}

dialog.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
    (function() {
      // Runs the busy stuff and closes the dialog using .close() on success
      google.script.run
          .withSuccessHandler(google.script.host.close)
          .doBusyStuff();
    })();
    </script>
  </head>
  <body>
  <p>Please wait a moment...</p>
  </body>
</html>


来源:https://stackoverflow.com/questions/38892675/close-dialog-when-both-dialog-and-custom-sidebar-are-present

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!