虽然 HtmlService 允许您提供 HTML,但它不是“托管”页面,您无法通过 URL 直接访问 Apps 脚本项目中的各种 html 文件。相反,您的 Web 应用程序在发布时会有一个 URL,这是您唯一拥有的 URL。
这是一种方法,您可以从脚本中提供单独的页面,并让它们的行为类似于 html 文件链接。
该doGet()
函数在调用时会传递一个事件,我们可以利用它来指示我们想要提供哪个页面。如果我们的 Web App ID 是<SCRIPTURL>
,则 URL 加上请求特定页面的查询字符串如下所示:
https://script.google.com/macros/s/<SCRIPTURL>/dev?page=my1
使用模板化的 HTML,我们可以动态生成必要的 URL + 查询字符串。在我们的doGet()
中,我们只需要解析查询字符串来确定要服务的页面。
这是脚本,有两个示例页面,其中包含在它们之间翻转的按钮。
代码.gs
/**
* Get the URL for the Google Apps Script running as a WebApp.
*/
function getScriptUrl() {
var url = ScriptApp.getService().getUrl();
return url;
}
/**
* Get "home page", or a requested page.
* Expects a 'page' parameter in querystring.
*
* @param {event} e Event passed to doGet, with querystring
* @returns {String/html} Html to be served
*/
function doGet(e) {
Logger.log( Utilities.jsonStringify(e) );
if (!e.parameter.page) {
// When no specific page requested, return "home page"
return HtmlService.createTemplateFromFile('my1').evaluate();
}
// else, use page parameter to pick an html file from the script
return HtmlService.createTemplateFromFile(e.parameter['page']).evaluate();
}
my1.html
<html>
<body>
<h1>Source = my1.html</h1>
<?var url = getScriptUrl();?><a href='<?=url?>?page=my2'> <input type='button' name='button' value='my2.html'></a>
</body>
</html>
my2.html
<html>
<body>
<h1>Source = my2.html</h1>
<?var url = getScriptUrl();?><a href='<?=url?>?page=my1'> <input type='button' name='button' value='my1.html'></a>
</body>
</html>