从同一个脚本提供不同的HTML页面?

时间:2017-02-24 02:47:21

标签: google-apps-script

我正在尝试使用单个GAS项目,通过根据用户点击的内容提供不同的HTML页面来更改其UI。我无法弄清楚如何从脚本中提供不同的HTML,替换当前的浏览器页面并保留状态。任何帮助赞赏。谢谢。

2 个答案:

答案 0 :(得分:0)

使用google.script.run,您可以从html页面在服务器上运行任何脚本。通过communicating with the server,您可以访问PropertiesService,这使您能够在页面之间存储信息。我个人喜欢HTML Service createHtmlOutput(html)因为我可以编辑html而无需编辑单独的页面。

我决定在这里回答您的问题,以便我可以使用代码部分。

<强>问题:

  

我实际上是想避免操纵HTML并提供服务   存储在项目中的完全不同的HTML文件。我该怎么做   页面再次调用脚本并用新的替换自己   内容?

我们猜测完全替换页面并不是您想要的,因为用户将遭受页面刷新。但你可以像这样创建div:

<style>#R01{display:none;}</style>
<div class="replaceable" id="R01"></div>

如果您将所有可替换内容放入div中,那么您可以通过以下呼叫从服务器请求内容:

google.script.run
    .withSuccessHandler(updateConversation)
    .withFailureHandler(showStatus)
    .getConversation();

并将新内容放入相应的div中,然后使用另一对更改css并关闭旧内容并打开新内容。从而避免页面刷新。不要忘记先将旧数据保存到PropertiesService中。所以我不认为改变整个页面是可行的,但我可能是错的。我认为只是更改一些内部内容将避免需要总页面刷新。如果您想更改图像,可以使用CSS Sprites

避免再次下载

答案 1 :(得分:0)

我使用两个选项:

  • 有一个主页面,其中按钮或文本区域的onchange设置为一个函数,该函数回调到服务器端并获取新的页面数据,然后用新页面替换当前页面或页面的一部分。 / LI>
  • 在URL中传递参数并让服务器端doGet()解析参数和分支以根据这些值加载给定页面。

我有效地使用了这两者的组合。基本上我有一个div,它有我的&#34;菜单&#34;和div是要替换的部分。我的菜单发生了变化,然后数据被发送回服务器以获取动态主体。返回HTML然后我replace using innerHTML

在相同的代码中,我提供pass menu values via the published URL的能力。这允许我直接转到某些值,如果我选择了我有一个Google网站,我们将脚本嵌入到页面中,菜单选项可能特定于该页面。它允许我们使用iFrame显示Web应用程序并直接进入相关界面。