繁体   English   中英

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

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

我编写了一个脚本,每次运行时都会创建一个新的“报告”。 这是通过生成一个新的 Google 电子表格来完成的,该电子表格然后根据与其关联的原始电子表格中的输入显示一组过滤的值。 下面是代码:

报告脚本

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

菜单条码

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

HTML 文件代码

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

我对编码非常陌生,我了解它背后的逻辑,但是,我对 Google Scripts 编码的每个功能/格式都非常不熟悉。

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

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

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

另一种选择是将电子表格的URL作为属性传递给 HtmlTemplate object:

  let template = HtmlService.createTemplateFromFile("popup");
  template.url = url;
  return SpreadsheetApp.getUi().showDialog(template.evaluate());

HtmlTemplate object 上调用 evaluate() 将执行嵌入的 JS 代码并将您传递给模板的所有变量放在 scope 中。

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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM