动态更改 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>
我编写了一个脚本,每次 运行 时都会创建一个新的“报告”。这是通过生成一个新的 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>