繁体   English   中英

Google Apps 脚本切换 html 文件

[英]Google Apps Script switching html files

我想知道谷歌应用程序脚本是否可以显示一个 html 文件的内容 return HtmlService.createHtmlOutputFromFile('0'); ,在文件中有一个按钮,当按下按钮时,它将导致屏幕擦除当前信息并用第二个 html 文件替换自身 return HtmlService.createHtmlOutputFromFile('1'); . *注意我不想链接到谷歌文档或其他网页。 只是想知道您是否可以在同一脚本文档中的 html 文件之间切换。 如果可能的话,我的理由是要有一个“菜单”页面来显示不同的主题,并将所有内容保存在一个文档中以更有条理。

在某种程度上是可能的。 我们将暗示有一个功能,可以从HTML文件中获取信息,然后将其写在页面上。 如果您希望能够导航,则每个拥有的.html文件必须在<script></script>具有以下功能

function changePage(page) {
    document.open();   //should work fine without this
    document.write(page);
    document.close();  //should work fine without this
}

该位将处理使用新内容更改整个页面的内容。 现在,我们需要以某种方式获取该内容。 这将通过Google脚本中.gs文件内部的函数来完成,如下所示

function newPage(page) {
  return HtmlService.createHtmlOutputFromFile(page).getContent()
}

然后在页面内部,每当要更改为新页面时,都需要一个按钮:

<button onclick="google.script.run.withSuccessHandler(changePage).newPage('success')">Next Page</button>

在这种情况下, newPage()函数需要一个字符串,该字符串将说明html的名称是什么。 因此,遵循逻辑,我们将做

return HtmlService.createHtmlOutputFromFile('success').getContent()`

一旦我们按下该按钮,并且该脚本完成并返回了我们想要的HTML字符串,我们就可以使用它来设置当前页面的HTML。

这是如何工作的完整示例。 您可以在Index.htmlsuccess.html之间导航

代码

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

function newPage(page) {
  return HtmlService.createHtmlOutputFromFile(page).getContent()
}

Index.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>

  <script>  
  function changePage(page) {
    document.open();
    document.write(page);
    document.close();
  }
  </script>

  <body>
  First Page
    <button onclick="google.script.run.withSuccessHandler(changePage).newPage('success')">Next Page</button>
  </body>
</html>

success.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>  
  <script>  
  function changePage(page) {
    document.open();
    document.write(page);
    document.close();
  }
  </script>
  <body>
    It worked!
    <button onclick="google.script.run.withSuccessHandler(changePage).newPage('Index')">First Page</button>
  </body>
</html>

如果我使用 HtmlService.createTemplateFromFile('Index').evaluate(); 这可以工作吗? 而是返回 HtmlService.createHtmlOutputFromFile('Index')?

暂无
暂无

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

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