本文介绍了渲染/评估两次以上后,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);
- 如果我不使用它,它甚至不能持续到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
>
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);
- 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 ...
- 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()不会返回任何网页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!