簡體   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