在Google Apps脚本中捕获针对电子表格应用模式对话框的onClose事件

时间:2014-09-29 03:33:09

标签: javascript google-apps-script modal-dialog google-sheets google-spreadsheet-api

我希望在从电子表格应用程序关闭模态对话框(使用showModalDialog()打开)时执行某些操作。

但是我在Google提供的API文档中找不到此类事件的引用。 I found how to capture this event in a Alert Box,通过使用这段代码,我可以捕获用户关闭警报框的方式,但我不能在模态对话框或无模式对话框中使用它。

有办法做到这一点吗?如果你这样做,请回答。

2 个答案:

答案 0 :(得分:7)

可能。你应该以一种无关紧要的方式编写脚本。例如,通过在对话框中显示一个大动作按钮,向用户明确说明他必须单击该按钮才能继续执行脚本。

但是如果你真的想要实现这一点,我猜你可以使用HtmlService对话框定期对后端进行异步调用,每个调用在退出之前等待下一个调用,然后如果&#34 ;下一个"调用没有及时,它可以假设对话框已关闭并执行关闭程序而不是简单地退出。

答案 1 :(得分:3)

这是另一种解决方案。您可以在HTML(由GAS提供)中使用Google托管的jquery来跟踪页面关闭时的卸载事件。以下是一些示例代码:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <!-- page content -->
  </body>

  <!-- Minified google hosted jquery (see https://developers.google.com/speed/libraries/)-->
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

  <!-- And here's where the magic happens -->
  <script type="text/javascript">
    $(document).ready( e => {
      console.log('-- DOM ready --');

      /** Add jquery unload listener */
      $(window).on('unload', e => {
        console.log("Invoked just before unload");
        // do pre-unload stuff
      });
    });
  </script>
</html>