【问题标题】:New Google App Script IDE changed how GetUrl() works新的 Google App Script IDE 改变了 GetUrl() 的工作方式
【发布时间】:2021-04-01 15:10:07
【问题描述】:

我一直在使用ScriptApp.getService().getUrl() 服务器端将当前的开发或产品 (exec) url 返回到客户端。我这样做是为了提供“永久链接”或复制 URL 功能,以便用户可以链接到应用程序中的特定记录。比如:

https://script.google.com/macros/s/{ID}/exec?recordId=999

最近,当 Google 推出新的 IDE 时,我开始遇到ScriptApp.getService().getUrl() 仅返回旧 URL 的问题。

我能够用一个新项目重新创建它,所以这可能是一个新的 IDE 错误?

重建步骤

  1. 创建一个新的应用脚本项目。
  2. 确保选择“使用旧版编辑器”
  3. 创建一个显示 URL 的应用

Index.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
     <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  </head>
  <body>
    <h2>Hello World 2</h2>
    <div id='test'>xx</div>
      <script>
      $(document).ready(function() {
          google.script.run.withSuccessHandler(success).getUrl();
      });

      function success(url) {
          $("#test").html(url);
      }
  </script>
  </body>
</html>

代码.gs

function doGet() {
  return HtmlService.createHtmlOutputFromFile('Index');
}

function getUrl(){
  Logger.log(ScriptApp.getService().getUrl());
  return ScriptApp.getService().getUrl();
}
  1. 菜单发布 -> 部署为 Web 应用程序(旧 IDE)。
  2. 打开新部署的应用,并确认屏幕上的 URL 与您点击的 URL 相同。
  3. 菜单发布 -> 部署为 Web 应用,点击“最新代码”链接进入开发。
  4. 验证它是否显示正确的开发 URL。
  5. 单击“使用新编辑器”按钮切换到新的 IDE。
  6. 单击部署 -> 新建部署。
  7. 输入描述并点击“部署”
  8. 现在打开已发布的新 URL。
  9. 请注意地址栏中的 URL 与 getURL 调用中页面上的 URL 有何不同:页面上的 URL 与旧的 IDE URL 相同。

所以问题是:如何让 Google 完全归档旧网址?

【问题讨论】:

  • 您可能需要在问题跟踪器中创建一个新问题。有关详细信息,请参阅tag info page
  • 此问题已提交:issuetracker.google.com/170799249.
  • 谢谢。同意,它看起来像同样的问题。我会监控分辨率。

标签: google-apps-script deployment web-applications ide


【解决方案1】:

几天前,Google 使创建版本并将其分配给部署成为可能。

资源

【讨论】:

    【解决方案2】:

    (我来自问题跟踪器的回复,此处供参考https://issuetracker.google.com/issues/170799249#comment26

    在旧版编辑器中,用户必须保存新的项目版本,然后发布(或立即发布) 有两个链接:dev(头)和带有静态链接的已发布版本(网络应用元版本)

    在新编辑器中,每次部署项目时都会获得新 ID 和新链接,但不会更新 Web 应用元版本。使用静态链接版本(网络应用元版本)无法控制此发布。因此,书签和敬意指向旧版本,或者如果此版本已存档,则会损坏。这很糟糕!

    ScriptApp.getService().getUrl() 似乎总是返回相同的静态链接到网络应用元版本。恕我直言,这令人困惑。

    对我有用的解决方法:切换到旧版编辑器,发布(部署为 Web 应用程序)最新(或所需)版本。它将成为可通过相同的旧链接访问的 Web 应用元版本。我假设ScriptApp.getService().getUrl() 返回的结果相同。不确定开发链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 2013-02-23
      相关资源
      最近更新 更多