【问题标题】:How to correctly display the "Current web app URL" in spreadsheet with `ScriptApp.getService().getUrl()`?如何使用 `ScriptApp.getService().getUrl()` 在电子表格中正确显示“当前 Web 应用程序 URL”?
【发布时间】:2020-09-16 01:36:12
【问题描述】:

我已经尝试过this,但仍然无法获取正确的网址。

此外,我不断得到一个看起来像这样的链接:https://script.google.com/macros/s/<ID>/exec,但应该得到一个看起来像这样的链接:https://script.google.com/a/<DOMAIN>/macros/s/<ID>/exec

编辑: 第一个链接似乎只有在我手动部署为 Web 应用程序之前才有效。但我正在接近这一点,如in this GitHub repo 所示。我希望能够分发电子表格,并让使用它的人能够直接从电子表格中的自定义菜单进行部署。

我希望这不会与 my other post 重复。

更新: 最初,我试图通过从单元格中调用函数 (appURL()) 来显示 URL。但是现在我尝试直接从脚本文件中将该单元格的值设置为ScriptApp.getService().getUrl(),这有助于获得<DOMAIN> 部分,但我仍然没有得到与发布>部署为网络应用程序>“当前网络应用 URL:”(与 <ID> 不同)由于某种原因不起作用。

【问题讨论】:

  • 两个链接都是正确的。为什么需要包含/a/<DOMAIN>/的URL?
  • @Rubén,“当前网络应用 URL”包含它,当我在浏览器中打开这两个 URL 进行测试时,它似乎是唯一有效的 URL。
  • 那是因为您使用的是 G Suite 帐号。如果您改用 Google 通用帐户(即 username@gmail.com)怎么办?
  • @Rubén,但我必须使用 G Suite 帐户。当 Publish>Deploy as web app>"Current web app URL:" 时,有没有办法获得确切的 URL?
  • 您是否尝试使用部署 url 和它们各自部分中的字符串“a/”和“/”自己构建最终链接?为什么这不起作用?

标签: google-apps-script google-sheets


【解决方案1】:

如果您知道域名,您可以构建它。

示例:

function createDomainURL(domain, deploymentUrl){
    var url = deploymentUrl.split('/');
    url.splice(3,0,'a');
    url.splice(5,0,domain);
    return url.join('/');
}

【讨论】:

  • 谢谢。看来我们是同时发的。但是我已经弄清楚了这部分(请参阅我的更新)。我现在缺少的是正确的 ID
猜你喜欢
  • 1970-01-01
  • 2021-01-27
  • 2014-12-17
  • 2011-05-12
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
相关资源
最近更新 更多