【问题标题】:get current page url获取当前页面url
【发布时间】:2019-09-07 14:29:41
【问题描述】:

在使用 GAS HtmlService 的网络应用程序上,我需要获取当前页面的 url 以在模板中构建新链接。

该网络应用程序将在 Google 网站页面(GAS 作为小工具)中运行,但也可以独立运行

我正在尝试“var pageUrl = document.location.href”,然后在 Html 模板中使用 pageUrl,如下所示。我知道这是错的,但我迷路了,对不起。

<a href="<?= pageUrl + "?item=xyz" ?>" >Item xyz link</a>

谢谢,福斯托

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    您可以通过 ScriptApp 获取 webapp 的 url:

    <a href="<?= ScriptApp.getService().getUrl() + "?item=xyz" ?>" >Item xyz link</a>
    

    您可以通过 SitesApp 获取站点中的 url:

    SitesApp.getActivePage().getUrl()
    

    尽管我认为这对于您所描述的内容实际上没有用,因为您无法向其中添加有用的查询参数。脚本在 iframe 中运行,因此尽管您可以在客户端上使用 document.location,但无论如何它对您没有帮助。 URL 被清理,服务 id 被删除。

    【讨论】:

    • 在这两种情况下都没有办法获取实际的 Url,比如使用 document.location.href 吗?
    • 没有。该脚本在指向 script.google.com/blank 的 iframe 中运行,因此您将获得的“实际”网址就是这样。
    • 感谢 Corey 的支持,我将不得不寻找另一种方法
    • 请注意,由于站点在 2016 年更改了界面,因此不再支持此答案。
    【解决方案2】:

    你能负担得起 jQuery 路线吗?

    $(document).ready( function() {
    
    var currentURL = window.location;
    
    $('#myLink').prop('href', currentURL);
    
    
    });
    

    那么……

    <a id="myLink" href="">Link to somewhere</a>
    

    【讨论】:

    • 那行不通... window.location 当前指向 script.google.com/blank,并且不能保证这种行为会保持这种状态(但我几乎可以保证它赢了'永远不会是出现在浏览器栏中的 url)。这里有 iframe 做魔法来补充 Caja 所做的事情,并且在没有通过 ScriptApp 授予的明确许可的情况下无法读取 window.location 是故意的。
    • 我宁愿不使用 jQuery,但是我尝试了类似的方法,但它不起作用
    【解决方案3】:

    如今(自 2016 年网站发生变化以来)答案有点简单:

    var current_url = DocumentApp.getActiveDocument().getUrl();
    

    【讨论】:

      【解决方案4】:

      它对我有用:

      function doGet(e){
        Logger.log(ScriptApp.getService().getUrl());
      }
      

      然后加载您的网页应用页面,然后检查您的 appscript 中的日志!

      【讨论】:

        猜你喜欢
        • 2011-06-17
        • 1970-01-01
        • 2021-07-23
        • 1970-01-01
        • 2013-03-01
        • 2010-11-26
        • 2016-03-01
        • 2010-11-28
        • 2015-09-30
        相关资源
        最近更新 更多