user7552709
user7552709

Reputation:

Get the full browser URL in Apps Script

I'm looking to get the full URL of the current browser window in Apps Scripts while displaying the web app via HTMLService

  1. When I try this, it doesn't work because the Apps Scripts is sandboxed and I get another server url of some sort

    window.location.href 
    


  2. When I try this, I can only fetch the hash or parameters, not the full url

    google.script.url.getLocation(function(location) {
      console.log(location.parameters);
      console.log(location.hash);
    });
    

    source: https://developers.google.com/apps-script/guides/html/reference/url#methods


Purpose for the above: I want a button that people click on in the published Web App to remove the browser toolbar. However, the browser toolbar is not removable in the current browser window. So I want to fetch the Web App URL and put it in window.open() as a new window with the current web app because the browser toolbar can be remove this way. But I can't seem to get the current URL.

Any ideas how I can achieve this?

Thanks in advance!

Upvotes: 2

Views: 11338

Answers (3)

Grzegorz Maj
Grzegorz Maj

Reputation: 176

The solution depends on whether you decided to use templated HTML or not. If you do, you could write a small function which returns the webapp URL like this:

function getWebAppUrl()
{
  return ScriptApp.getService().getUrl()
}

Now you can easily access this function by using printing scriptlets and then use it in your frontend JavasScript, for example:

function reloadPage()
{
  window.open(<?= getWebAppUrl() ?>, "_top")
}

Upvotes: 0

Cooper
Cooper

Reputation: 64032

I don't know what you meant by developer mode either but I took a guess at this being the answer to the question. If not, let me know and I'll remove it.

On the clientside you can use Javascript:

<script>
  function getUrl(){
    google.script.run
    .withSuccessHandler(function(url){
       document.getElementById('mydiv').innerHTML='<p>' + url + '</p>';
     })
    .getScriptUrl()
</script>
<body>
  <div id="mydiv"></div>
</body>

In Google Script:

function getScriptURL() {
  return ScriptApp.getService().getUrl();
}

Jan 10, 2021: Tested the above code in a window.onload and it is returning the correct url with a business account, V8 runtime and the new editor.

Upvotes: 5

Max Makhrov
Max Makhrov

Reputation: 18707

I'd suggest this code for the current script URL:

function getScriptURL() {
  // dev URI
  'https://script.google.com/macros/d/' + ScriptApp.getScriptId() + '/edit';
}

Upvotes: 0

Related Questions