【问题标题】:Capture onClose event for Spreadsheet App Modal Dialog in Google Apps Script在 Google Apps 脚本中为电子表格应用程序模式对话框捕获 onClose 事件
【发布时间】:2014-09-29 03:33:09
【问题描述】:

当从电子表格应用程序关闭模态对话框(使用showModalDialog() 打开)时,我想做一些事情。

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

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

【问题讨论】:

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


    【解决方案1】:

    这是不可能的。你应该以一种无关紧要的方式编写你的脚本。例如,通过在对话框中显示一个大的操作按钮,让用户清楚地知道他必须单击该按钮才能继续执行脚本。

    但是,如果您真的想实现这一点,我想您可以使用HtmlService 对话框对后端进行定期异步调用,并且每个调用在退出之前等待下一个调用,然后如果“下一个”调用确实如此来不及,它可以假定对话框已关闭并执行您的关闭过程,而不是简单地退出。

    【讨论】:

    • 谢谢,我拼命想弄清楚如何做到这一点。这真的应该是 GAS 提供的东西——至少,来自 Android 背景,似乎是一个明显的实用程序,他们错误地不提供能够通过成功处理程序传递回调的东西,因为当侧边栏关闭时.
    • 关于用例:侧边栏允许(在谷歌表格中)有选择地设置匹配某些条件的单元格的背景。如果用户使用 GAS 给定的关闭按钮关闭侧边栏,我应该如何知道何时清除任何“突出显示”,因为您无法向其添加事件侦听器 (AFAIK)。
    【解决方案2】:

    这是另一种解决方案。当页面关闭时,您可以在 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>
    

    【讨论】:

    • 我在没有 Jquery 的情况下尝试了这个,它没有像预期的那样被边栏调用。我能得到的最接近的东西是可见性状态更改,并且仅在导航离开和导航到页面时,而不是实际关闭侧边栏。
    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    相关资源
    最近更新 更多