【问题标题】:Get the full browser URL in Apps Script在 Apps 脚本中获取完整的浏览器 URL
【发布时间】:2019-05-10 21:39:06
【问题描述】:

我希望在通过 HTMLService 显示 Web 应用程序时在 Apps Scripts 中获取当前浏览器窗口的完整 URL

  1. 当我尝试这个时,它不起作用,因为 Apps 脚本是沙盒的,我得到了另一个服务器 URL

    window.location.href 
    


  2. 当我尝试这个时,我只能获取哈希或参数,而不是完整的 url

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

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


上述目的: 我想要一个人们在已发布的 Web 应用程序中单击以删除浏览器工具栏的按钮。但是,浏览器工具栏在当前浏览器窗口中是不可移动的。因此,我想获取 Web App URL 并将其作为当前 Web 应用程序的新窗口放入 window.open() 中,因为可以通过这种方式删除浏览器工具栏。但我似乎无法获取当前网址。

有什么想法可以实现这一点吗?

提前致谢!

【问题讨论】:

  • 我发现了这个:ScriptApp.getService().getUrl();但是,在开发者模式下是否可以获取此 URL?
  • 我能问你developer mode是什么吗?
  • 部署 Web 应用程序时,您可以“测试”代码。那就是开发者模式。开发超链接可以无限期地使用最新的更改,而无需重新发布。见图片:developers.google.com/apps-script/images/web_app_url.png
  • 代码:ScriptApp.getService().getUrl(); 要么获取“exec”url “dev”url,具体取决于项目当前正在运行的模式。所以,你能获取“开发”网址?是的,但代码需要从“开发”网址运行。如果代码从“exec”url 运行,则无法从ScriptApp.getService().getUrl(); 获取开发 URL。
  • @Alex 感谢您的回复。我可以理解developer mode。我注意到已经发布了几个答案。我认为他们会解决您的问题。

标签: google-apps-script


【解决方案1】:

我也不知道您所说的开发者模式是什么意思,但我猜想这是问题的答案。如果没有,请告诉我,我会删除它。

在客户端你可以使用 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>

在谷歌脚本中:

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

2021 年 1 月 10 日:在 window.onload 中测试了上述代码,它返回了带有企业帐户、V8 运行时和新编辑器的正确 url。

【讨论】:

  • 嗯...不确定是不是我做错了什么(因为我是 JS 和 Apps 脚本的新手),但我得到“未定义”。我将 google.script.run.....getscriptUrl() 包装在一个变量中并尝试返回它。不行。
  • 我在答案中添加了一些额外的代码。也许这会对你有所帮助。
  • @alex per documentation google.script.run 是异步的。使用它的成功和失败回调。
  • 那行得通。它只给出了 pub URI 而不是 dev URI,但无论如何,那都行!谢谢!
  • 现在似乎有一个错误,exec url 没有正确返回,这对我现在不起作用,可以正常获取 dev url stackoverflow.com/questions/60232532/…
【解决方案2】:

我建议为当前脚本 URL 使用此代码:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2011-09-10
    • 2018-03-30
    相关资源
    最近更新 更多