Search code examples
javascriptfunctiongoogle-apps-scriptself-invoking-functionprivate-functions

Problem with self-invoking functions calling other functions


In my index.html file (before closing body tag), I want a function to self-invoke itself when the page is loaded. However, I am having issues when the function (here, setUp) is defined in an external file.

If I copy-paste the setUp function in Index.html then everything works as expected.

I am new to JS: am I incorrectly linking script file? Thanks!

Index.html

    <script src="Code.gs">
        window.onload=setUp;
    </script>

Code.gs

        function setUp() {
            dateHelper_();
        }


Solution

    • You want to run Google Apps Script when HTML is loaded.

    If my understanding is correct, how about this modification? The flow of this modified script is as follows.

    1. When the HTML is opened, google.script.run is run and setUp() of Google Apps Script is run.
    2. When setUp() is finished, "ok" from setUp() is returned and the returned value is shown using console.log() at withSuccessHandler().
      • In this modified script, you can see Done: ok at the console of browser.

    Modified script:

    Please modify HTML and Google Apps Script on your script editor as follows.

    HTML & Javascript: Index.html
    <script>
      window.onload = google.script.run.withSuccessHandler((e) => {console.log("Done: " + e)}).setUp();
    </script>
    
    Google Apps Script: Code.gs
    function setUp() {
    //    dateHelper_();
      return "ok"; // In this modification, as a sample, "ok" is returned.
    }
    

    Note:

    • Although I'm not sure about your whole situation, HTML can be opened by a dialog, sidebar and Web Apps.

    Reference:

    If I misunderstood your question and this was not the result you want, I apologize.