链接到谷歌应用程序脚本中的另一个HTML页面似乎不起作用 [英] Linking to another html page in google apps script does not seem to work
问题描述
我尝试了为链接到另一个html提供的答案页面在谷歌应用程序脚本,但它不会回到页面my1,我得到一个空白屏幕。实际上,我试图通过添加第三个页面my3来扩展它,并在每个页面上都有两个按钮...
示例:
my1.html有按钮my2& my3
my2.html有按钮my1& my3
my3.html有按钮my1& my2
从my1开始,我可以使用my2或my3,但是从my2或my3中按下任意按钮,我得到一个空白屏幕,当刷新,最后回到my1 ...
谢谢。
代码.gs
/ **
*获取作为WebApp运行的Google Apps脚本的URL。
* /
函数getScriptUrl(){
var url = ScriptApp.getService()。getUrl();
返回网址;
}
/ **
*获取主页或请求的页面。
*期望在查询字符串中有一个页面参数。
*
* @param {event} e传递给doGet的事件,包含查询字符串
* @returns {String / html}要服务的Html
* /
函数doGet(e){
Logger.log(Utilities.jsonStringify(e));
if(!e.parameter.page){
//当没有特定页面请求时,返回主页
返回HtmlService.createTemplateFromFile('my1')。evaluate();
//使用页面参数从脚本中选择html文件
return HtmlService.createTemplateFromFile(e.parameter ['page'])。evaluate();
}
my1.html
<!DOCTYPE html>
< html>
< body>
< h1> Source = my1.html< / h1>
<?var url = getScriptUrl();?>< a href ='<?= url?>?page = my2.html'> < input type ='button'name ='button'value ='my2.html'>< / a>
<?var url = getScriptUrl();?>< a href ='<?= url?>?page = my3.html'> < input type ='button'name ='button'value ='my3.html'>< / a>
< / body>
< / html>
my2.html
<!DOCTYPE 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>
<?var url = getScriptUrl();?>< a href ='<?= url?>?page = my3'> < input type ='button'name ='button'value ='my3.html'>< / a>
< / body>
< / html>
my3.html
<!DOCTYPE html>
< html>
< body>
< h1> Source = my3.html< / h1>
<?var url = getScriptUrl();?>< a href ='<?= url?>?page = my1'> < input type ='button'name ='button'value ='my1.html'>< / a>
<?var url = getScriptUrl();?>< a href ='<?= url?>?page = my2'> < input type ='button'name ='button'value ='my2.html'>< / a>
< / body>
< / html>
将沙箱模式设置为IFRAME:
函数doGet(e){
//Logger.log(Utilities.jsonStringify(e));
Logger.log(e.parameter.page);
var pgToLoad = e.parameter.page;
if(!e.parameter.page){
Logger.log('!e.parameter.page')
//当没有特定页面请求时,返回home page
return HtmlService.createTemplateFromFile('my1')。evaluate()
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
Logger.log('网页有东西');
//否则,使用页面参数从脚本中选择一个html文件
return HtmlService.createTemplateFromFile(pgToLoad).evaluate()
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
地址:
< HEAD>
< base target =_ top>
< / head>
到您的所有页面,它都可以工作。
my1.html
<!DOCTYPE html>
< html>
< head>
< base target =_ top>
< / head>
< body>
< h1> Source = my1.html< / h1>
<?var url = getScriptUrl();?>< a href ='<?= url?>?page = my2.html'> < input type ='button'name ='button'value ='my2.html'>< / a>
<?var url = getScriptUrl();?>< a href ='<?= url?>?page = my3.html'> < input type ='button'name ='button'value ='my3.html'>< / a>
< / body>
< / html>
I have tried the answer provided for linking to another html page in google apps script, but it will not go back to page my1, I get a blank screen. In fact, I tried to expand it by adding a third page, my3 and having two buttons on each page...
example:
my1.html has buttons "my2" & "my3"
my2.html has buttons "my1" & "my3"
my3.html has buttons "my1" & "my2"
From my1, I can go to either my2 or my3, however from either my2 or my3, pressing any button, I get a blank screen and when refreshed, end up back at my1...
Thank you.
Code.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
<!DOCTYPE html>
<html>
<body>
<h1>Source = my1.html</h1>
<?var url = getScriptUrl();?><a href='<?=url?>?page=my2.html'> <input type='button' name='button' value='my2.html'></a>
<?var url = getScriptUrl();?><a href='<?=url?>?page=my3.html'> <input type='button' name='button' value='my3.html'></a>
</body>
</html>
my2.html
<!DOCTYPE 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>
<?var url = getScriptUrl();?><a href='<?=url?>?page=my3'> <input type='button' name='button' value='my3.html'></a>
</body>
</html>
my3.html
<!DOCTYPE html>
<html>
<body>
<h1>Source = my3.html</h1>
<?var url = getScriptUrl();?><a href='<?=url?>?page=my1'> <input type='button' name='button' value='my1.html'></a>
<?var url = getScriptUrl();?><a href='<?=url?>?page=my2'> <input type='button' name='button' value='my2.html'></a>
</body>
</html>
Set the sandbox mode to IFRAME:
function doGet(e) {
//Logger.log( Utilities.jsonStringify(e) );
Logger.log(e.parameter.page);
var pgToLoad = e.parameter.page;
if (!e.parameter.page) {
Logger.log('!e.parameter.page')
// When no specific page requested, return "home page"
return HtmlService.createTemplateFromFile('my1').evaluate()
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
Logger.log('there is something for the page');
// else, use page parameter to pick an html file from the script
return HtmlService.createTemplateFromFile(pgToLoad).evaluate()
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
Add:
<head>
<base target="_top">
</head>
To all your pages, and it will work.
my1.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<h1>Source = my1.html</h1>
<?var url = getScriptUrl();?><a href='<?=url?>?page=my2.html'> <input type='button' name='button' value='my2.html'></a>
<?var url = getScriptUrl();?><a href='<?=url?>?page=my3.html'> <input type='button' name='button' value='my3.html'></a>
</body>
</html>
这篇关于链接到谷歌应用程序脚本中的另一个HTML页面似乎不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!