本文介绍了渲染/评估两次以上后,Google Web应用程序脚本doget()不会返回任何网页的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的Web应用程序的链接:

>

  function doGet(e){Logger.log(e);Logger.log("view =" + e.parameters.view);if(e.parameters.view =="weekly"){Logger.log("view == weekly");var page = addWeeklyReport();//Logger.log(page.getTitle());//返回page.evaluate();返回page.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME).setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);}否则if(e.parameters.view =="home"){Logger.log("view is home");var home = HtmlService.createTemplateFromFile("homehs");返回home.evaluate();//返回addWeeklyReport();}否则if(e.parameters.view =="projects"){Logger.log(这里的视图是项目");返回HtmlService.createTemplateFromFile("project-list").evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME).setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);}其他if(e.parameters.view =="addproject"){返回HtmlService.createTemplateFromFile("add-project").evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME).setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);}别的{//返回HtmlService.createTemplateFromFile("demo").evaluate();返回HtmlService.createTemplate(< h2>演示</h2>").evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME).setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);}} 
  setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL); 
  1. 如果我不使用它,它甚至不能持续到2)步,单击Enter后立即消失.
  2. 添加后,它一直存在,直到第二次单击为止.
  1. 它已发布为最新版本的网络应用程序
  2. 发布为"ME"以获取最多的访问权限.尽管我已经用尽了所有其他选择,但似乎没有任何作用
  3. 甚至任何人都可以访问应用程序"
解决方案

您需要设置 base 的目标 top 框架.否则,您将创建一个嵌套框架循环,因为基本目标默认为 _self ,并且您将html加载到iframe中.

 <基本目标="_ top"> 

This is the link of my web app:https://script.google.com/macros/s/AKfycbzmbR9ljp7d5T8vsPTKt4b_v461NDNtxh6w6s1FFuJOhSGh6EKE/exec?view=home

>

function doGet(e){
  Logger.log(e);
  Logger.log("view="+e.parameters.view);

  if(e.parameters.view =="weekly"){
    Logger.log("view==weekly");

    var page = addWeeklyReport();

    //Logger.log(page.getTitle());
    //return page.evaluate();

    return page.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
  }else if(e.parameters.view == "home"){
    Logger.log("view is home");
    var home = HtmlService.createTemplateFromFile("homehs");
    return home.evaluate();
  //return addWeeklyReport();
  }else if(e.parameters.view == "projects"){
    Logger.log("here view is projects");
    return HtmlService.createTemplateFromFile("project-list").evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
  }else if(e.parameters.view=="addproject"){
    return HtmlService.createTemplateFromFile("add-project").evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
  }else{
    //return HtmlService.createTemplateFromFile("demo").evaluate();
    return HtmlService.createTemplate("<h2>demo</h2>").evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
  }

}
setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
  1. If i didn't use this, it couldnt even last until 2)step, straight away nothing after clicking Enter.
  2. After adding this, it survived until the 2nd click ...
  1. it is published as latest version web app
  2. published as "ME" in order to gain the most access . although i have exhausted all other options and nothing seemed to work
  3. "anyone even anonymous can access app"
解决方案

You need to set base's target to the top frame. Otherwise you'll be creating a nesting frame loop because base target defaults to _self and you are loading the html in a iframe.

<base target="_top"> 

这篇关于渲染/评估两次以上后,Google Web应用程序脚本doget()不会返回任何网页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-31 23:33