猿问
下载APP

链接到Google Apps脚本中的其他HTML页面

链接到Google Apps脚本中的其他HTML页面

从ScriptDbConsole.html链接到legend.html时,我收到以下错误消息:

抱歉,您请求的文件不存在。请检查地址并再试一次。

这通常适用于正常环境,但我猜这里不行。它位于script.google.com中。

在script.google.com项目中创建一个新的.html文件时,它会在与其他文件相同的位置创建它,所以这段代码实际上应该正常工作吗?如何从ScriptDbConsole.html打开legend.html?

<a href='legend.html' target='_blank'>Open in new window</a>


千万里不及你
浏览 36回答 2
2回答

侃侃尔雅

虽然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(),我们只需要解析查询字符串以确定要服务的页面。这是脚本,有两个示例页面,包含在它们之间翻转的按钮。Code.gs/** &nbsp;*&nbsp;Get&nbsp;the&nbsp;URL&nbsp;for&nbsp;the&nbsp;Google&nbsp;Apps&nbsp;Script&nbsp;running&nbsp;as&nbsp;a&nbsp;WebApp. &nbsp;*/function&nbsp;getScriptUrl()&nbsp;{ &nbsp;var&nbsp;url&nbsp;=&nbsp;ScriptApp.getService().getUrl(); &nbsp;return&nbsp;url;}/** &nbsp;*&nbsp;Get&nbsp;"home&nbsp;page",&nbsp;or&nbsp;a&nbsp;requested&nbsp;page. &nbsp;*&nbsp;Expects&nbsp;a&nbsp;'page'&nbsp;parameter&nbsp;in&nbsp;querystring. &nbsp;* &nbsp;*&nbsp;@param&nbsp;{event}&nbsp;e&nbsp;Event&nbsp;passed&nbsp;to&nbsp;doGet,&nbsp;with&nbsp;querystring &nbsp;*&nbsp;@returns&nbsp;{String/html}&nbsp;Html&nbsp;to&nbsp;be&nbsp;served &nbsp;*/function&nbsp;doGet(e)&nbsp;{ &nbsp;&nbsp;Logger.log(&nbsp;Utilities.jsonStringify(e)&nbsp;); &nbsp;&nbsp;if&nbsp;(!e.parameter.page)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;When&nbsp;no&nbsp;specific&nbsp;page&nbsp;requested,&nbsp;return&nbsp;"home&nbsp;page" &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;HtmlService.createTemplateFromFile('my1').evaluate(); &nbsp;&nbsp;} &nbsp;&nbsp;//&nbsp;else,&nbsp;use&nbsp;page&nbsp;parameter&nbsp;to&nbsp;pick&nbsp;an&nbsp;html&nbsp;file&nbsp;from&nbsp;the&nbsp;script &nbsp;&nbsp;return&nbsp;HtmlService.createTemplateFromFile(e.parameter['page']).evaluate();}my1.html<html> &nbsp;&nbsp;<body> &nbsp;&nbsp;&nbsp;&nbsp;<h1>Source&nbsp;=&nbsp;my1.html</h1> &nbsp;&nbsp;&nbsp;&nbsp;<?var&nbsp;url&nbsp;=&nbsp;getScriptUrl();?><a&nbsp;href='<?=url?>?page=my2'>&nbsp;<input&nbsp;type='button'&nbsp;name='button'&nbsp;value='my2.html'></a> &nbsp;&nbsp;</body></html>my2.html<html> &nbsp;&nbsp;<body> &nbsp;&nbsp;&nbsp;&nbsp;<h1>Source&nbsp;=&nbsp;my2.html</h1> &nbsp;&nbsp;&nbsp;&nbsp;<?var&nbsp;url&nbsp;=&nbsp;getScriptUrl();?><a&nbsp;href='<?=url?>?page=my1'>&nbsp;<input&nbsp;type='button'&nbsp;name='button'&nbsp;value='my1.html'></a> &nbsp;&nbsp;</body></html>

幕布斯7119047

Google应用脚本网络应用主要用于单页面网络应用。但它也可以用作多页面应用程序(不推荐)。这是一个示例网络应用程序:Code.gs://@return&nbsp;Base&nbsp;Urlfunction&nbsp;getUrl()&nbsp;{ &nbsp;&nbsp;return&nbsp;ScriptApp.getService().getUrl()}//@return&nbsp;Html&nbsp;page&nbsp;raw&nbsp;content&nbsp;stringfunction&nbsp;getHtml(hash)&nbsp;{ &nbsp;&nbsp;return&nbsp;HtmlService.createHtmlOutputFromFile(hash).getContent()}//@return&nbsp;provided&nbsp;page&nbsp;in&nbsp;the&nbsp;urlquery&nbsp;'?page=[PAGEID]'&nbsp;or&nbsp;main&nbsp;index&nbsp;pagefunction&nbsp;doGet(e)&nbsp;{ &nbsp;&nbsp;var&nbsp;page&nbsp;=&nbsp;e.parameter.page&nbsp;&nbsp;return&nbsp;HtmlService.createHtmlOutputFromFile(page&nbsp;||&nbsp;'index') &nbsp;&nbsp;&nbsp;&nbsp;.addMetaTag('viewport',&nbsp;'width=device-width,&nbsp;initial-scale=1') &nbsp;&nbsp;&nbsp;&nbsp;.setTitle('App&nbsp;Demo')}page1.html<h3>This&nbsp;is&nbsp;Page&nbsp;1</h3><p>Hello&nbsp;World!</p>page2.html<h4>This&nbsp;is&nbsp;Page2</h4><p>Goodbye&nbsp;World!</p>的index.html<!DOCTYPE&nbsp;html><html> &nbsp;&nbsp;<head> &nbsp;&nbsp;&nbsp;&nbsp;<base&nbsp;target="_top"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;<title>Single&nbsp;Page&nbsp;App</title> &nbsp;&nbsp;&nbsp;&nbsp;<script&nbsp;src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> &nbsp;&nbsp;&nbsp;&nbsp;<style> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h1&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-align:&nbsp;center; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;margin:&nbsp;2px; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-transform:&nbsp;uppercase; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background-color:&nbsp;green; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;span:hover, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a:hover&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background-color:&nbsp;yellowgreen; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background-color:&nbsp;brown; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color:&nbsp;white; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size:&nbsp;2em; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a:visited&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color:&nbsp;white; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;</style> &nbsp;&nbsp;</head> &nbsp;&nbsp;<body> &nbsp;&nbsp;&nbsp;&nbsp;<h1><span&nbsp;id="type">Single</span>&nbsp;Page&nbsp;App&nbsp;Demo</h1> &nbsp;&nbsp;&nbsp;&nbsp;<div&nbsp;id="main">Loading...</div> &nbsp;&nbsp;&nbsp;&nbsp;<script> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Change&nbsp;base&nbsp;url &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;google.script.run&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.withSuccessHandler(url&nbsp;=>&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('base').attr('href',&nbsp;url) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getUrl() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Function&nbsp;to&nbsp;handle&nbsp;hash&nbsp;change &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;change(e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;hash&nbsp;=&nbsp;e.location.hash&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!hash)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;google.script.run&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.withSuccessHandler(htmlFragment&nbsp;=>&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('#main').html(htmlFragment) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getHtml(hash) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;google.script.history.setChangeHandler(change) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Function&nbsp;to&nbsp;add&nbsp;Main&nbsp;page&nbsp;html &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;main()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('#main').html(` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<ul> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<li><a&nbsp;href="#page1">Page1</a></li> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<li><a&nbsp;href="#page2">Page2</a></li> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</ul>`) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Loads&nbsp;Main&nbsp;html&nbsp;from&nbsp;main&nbsp;function &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Adds&nbsp;toggle&nbsp;to&nbsp;span&nbsp;to&nbsp;change&nbsp;to&nbsp;a&nbsp;Multiple&nbsp;page&nbsp;app &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(()&nbsp;=>&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('#type').on('click',&nbsp;()&nbsp;=>&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;hf&nbsp;=&nbsp;$('a').attr('href') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!hf)&nbsp;return &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hf&nbsp;=&nbsp;hf.indexOf('#')&nbsp;+&nbsp;1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('#type').text(hf&nbsp;?&nbsp;'Multiple'&nbsp;:&nbsp;'Single') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('a').each((i,&nbsp;el)&nbsp;=>&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(el).attr('href',&nbsp;(i,&nbsp;v)&nbsp;=> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hf&nbsp;?&nbsp;'?page='&nbsp;+&nbsp;v.slice(1)&nbsp;:&nbsp;'#'&nbsp;+&nbsp;v.slice(6) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}) &nbsp;&nbsp;&nbsp;&nbsp;</script> &nbsp;&nbsp;</body></html>参考文献:网络应用指南setChangeHandler
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答