链接到谷歌应用程序脚本中的另一个HTML页面似乎不起作用 [英] Linking to another html page in google apps script does not seem to work

查看:85
本文介绍了链接到谷歌应用程序脚本中的另一个HTML页面似乎不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试了为链接到另一个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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆