动态更改 HTML 文件中的 URL - Google Apps 脚本/Google 表格

Dynamically changing URL's in an HTML File - Google Apps Scripts / Google Sheets

我编写了一个脚本,每次 运行 时都会创建一个新的“报告”。这是通过生成一个新的 Google Spreadsheet 来完成的,然后它会根据它所绑定的原始 spreadsheet 中的输入显示一组过滤后的值。下面是代码:

Report Script

脚本由自定义菜单栏激活。下面是菜单栏的示例:

Menu Bar Code

单击自定义菜单栏后,我希望打开新生成的“报告”传播sheet。由于此脚本每次都创建一个新的传播sheet 运行,URL 每次都会不同,因此,我不确定如何合并变量 URL到 HTML 文件中。下面是我在使用自定义菜单栏时用来打开文件的一些代码行:

HTML File Code

在上图中,“+ ssNewURL +”是已知 URL 到所需目的地的位置。我试图引用我之前使用的变量 (ssNewURL),它获取新生成的 sheet 的 URL,但它不起作用。我试图解决 HTML 文件的格式问题,它要求 URL 是一个字符串;我试过改变双“”引号的位置, 和单 '' 引号。无论我尝试过什么,HTML 文件都拒绝打开。

我对编码非常陌生,我了解其背后的逻辑,但是,我对 Google 脚本编码的每个 function/formatting 都非常不熟悉。

任何关于获取代码的 HTML 部分以打开动态变化 URL 的建议或解决方法将不胜感激!

调用window.open()时,URL也需要用引号括起来。

 let htmlOutput = HtmlService.createHtmlOutput(
      "<script type='text/javascript'>" +
      "window.open('" + url + "', '_blank');" + 
      "google.script.host.close();" +
      "</script> "
  );

另一种选择是将电子表格的 URL 作为 属性:

传递给 HtmlTemplate 对象
  let template = HtmlService.createTemplateFromFile("popup");
  template.url = url;
  return SpreadsheetApp.getUi().showDialog(template.evaluate());

HtmlTemplate 对象上调用 evaluate() 将执行嵌入的 JS 代码并将您传递给模板的所有变量放在范围内。

popup.html

<body>
    Opening your spreadsheet...
    <input type='hidden' id="hidden-field" value='<?!= url ?>' />
    <script>
      var url = document.getElementById("hidden-field").value;
      window.open(url, "_blank");
      google.script.host.close();
    </script>
  </body>