1

스프레드 시트 앱에서 모달 대화 상자 (showModalDialog()을 사용하여 열었 음)를 닫으면 무엇인가하고 싶습니다.Google Apps 스크립트에서 스프레드 시트 앱 모달 대화 상자에 대한 onClose 이벤트 캡처

그러나 Google에서 제공 한 API 문서에서 그러한 이벤트에 대한 참조를 찾을 수 없습니다. I found how to capture this event in a Alert Box 그리고이 코드를 사용하여 사용자가 경고 상자를 닫는 방법을 캡처 할 수 있지만 모달 대화 상자 나 모덜리스 대화 상자에서는 사용할 수 없습니다.

이 방법이 있습니까? 당신이 원한다면 친절하게 대답하십시오.

답변

7

이것은 이 아니며이 가능합니다. 그리고 당신은이 문제가 아닌 방식으로 스크립트를 작성해야합니다. 예를 들어 대화 상자에 커다란 동작 버튼을 표시하여 사용자가 계속 스크립트를 클릭해야한다는 것을 분명히합니다.

그러나 실제로 이것을 실현하려면 HtmlService 대화 상자를 사용하여 백엔드에 대한 일반 비동기 호출을 수행하고 각 호출이 종료되기 전에 다음 호출을 기다린 후 "다음"호출이 아닌 경우 시간이 지나면 대화 상자가 닫혔다 고 가정하고 간단히 종료하는 대신 닫기 절차를 실행합니다.

1

다른 해결책이 있습니다. HTML (GAS 서비스 제공)에서 google hosted 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>