链接到谷歌应用程序脚本中的另一个HTML页面似乎不起作用

时间:2016-02-05 15:19:20

标签: html google-apps-script

我已经尝试了为linking to another html page in google apps script提供的答案,但它不会返回到页面my1,我得到一个空白屏幕。事实上,我尝试通过添加第三页my3并在每个页面上有两个按钮来扩展它......

  

示例:

     

my1.html有按钮“my2”& “MY3”

     

my2.html有按钮“my1”& “MY3”

     

my3.html有按钮“my1”& “MY2”

从my1开始,我可以去my2或my3,但是从my2或my3,按任意按钮,我得到一个空白屏幕,当刷新时,最后回到my1 ...

谢谢。

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>

1 个答案:

答案 0 :(得分:1)

将沙盒模式设置为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);
}

添加:

<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>