渲染/评估两次以上后,Google Web应用程序脚本doget()不会返回任何网页 [英] Google web app script doget() do not return any webpage after rendering/evaluating more than twice
问题描述
这是我的Web应用程序的链接:
- Step2)单击Enter->确定
- Step3)点击每周添加-> 不显示任何内容
>
以下是日志:
好吧,奇怪的是,如果我手动输入url参数,页面就会呈现得很好:
这是doget()的代码段:
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);
- 如果我不使用它,它甚至不能持续到2)步,单击Enter后立即消失.
- 添加后,它一直存在,直到第二次单击为止.
关于访问权限:
- 它已发布为最新版本的网络应用程序
- 发布为"ME"以获取最多的访问权限.尽管我已经用尽了所有其他选择,但似乎没有任何作用
- 甚至任何人都可以访问应用程序"
您需要设置 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
- Step1) at home page -> OK
- Step2) click enter-> OK
- Step3) click add weekly -> Renders nothing
>
Here is the LOG:
Well, weirdly, if I manually input the url paremeters, the page is rendered just fine:
here is the code snippet of doget():
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);
}
}
about the codes:
setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
- If i didn't use this, it couldnt even last until 2)step, straight away nothing after clicking Enter.
- After adding this, it survived until the 2nd click ...
about the Access rights:
- it is published as latest version web app
- published as "ME" in order to gain the most access . although i have exhausted all other options and nothing seemed to work
- "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()不会返回任何网页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!