在iFrame中嵌入Google Apps脚本的问题

时间:2019-05-31 18:39:28

标签: iframe google-apps-script web-applications

我有一个多页Web应用程序。我要登录后,用户看到其队友列表并标记出勤状态。我的问题是,我无法在iFrame中而不是在Google脚本原始版本中显示它!例如,我想将其框架到我自己的网页。这是两天的时间,我无法克服这个问题,在这方面我读了很多文章,并且从头开始尝试了另一个应用程序,但是还没有运气。你们能帮我吗?

为澄清起见,我正在使用渲染功能将用户重定向到框架内。因此,就像@theMaster提到的那样,它不是多页Web应用程序。

这是我的doGet和Render函数:

function doGet(e){
    // Logger.log(e);
    Route.path("login",loadLogin);  
    Route.path("admin",loadAdmin);  
    Route.path("view",loadView);
    Route.path("form",loadForm);
if (e.parameters.id){
  LastID=e.parameters.id[0]; 
}
if (e.parameters.t){
  curT=e.parameters.t[0]; 
}  
if (Route[e.parameters.v]) {
  return Route[e.parameters.v]();
} else {
  return render('W-home');
  }    
}

function render(file, argObject){
    var page = HtmlService.createTemplateFromFile(file);
    if (argObject){
        var keys = Object.keys(argObject);
        keys.forEach(function (k){
        page[k]=argObject[k];
        });
    }
    var evalPage =page.evaluate();
    // if (!xFrame){return evalPage;};
    return evalPage.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
} 

我可以从主页转到登录页面,但是在那之后,即使它也不允许我访问Google!
在某些情况下,也会在框架内返回空白页!

这是我的客户端Java脚本示例代码。

      function goToForm(EmpNo){
        var link = "<?!=ScriptApp.getService().getUrl()?>"+"?v=form&id="+EmpNo[1]+"&t="+EmpNo[2];
        location.href=link;
// I tried different way to see if i can conqure this! 
        // if (clickBTN= 'a') {
        //   window.open(link, "_self");
        // } if (clickBTN= 'b') {
        //   location.href=link;
        // } if (clickBTN= 'c') {
        //   openNewURLInTheSameWindow(link);
        // }          
      }

我还具有两个全局变量xFrame,将XframeOptionsMode设置为allowAll或不设置,base将HTM页面上的基本目标设置为“ _top”或“ _self”。

请告知, M

1 个答案:

答案 0 :(得分:1)

尝试

window.top.location = link;

它将链接加载到顶部框架中。如果您要在网站中构建Web应用程序本身,则应使用

window.parent.location = link;

因为网络应用本身已加载到iframe中。


==================
|Your site       |<-mysite.com [TOP]
|                |
| =============  |
| |GASWebApp  |<-|--script.google.com[Frame#1]
| |           |  |
| |=========  |  |
| ||SandBox|  |  |
| ||User   |<-|--|-- Where your html code is
| ||Frame  |  |  |  (*.googleusercontent.com) 
| |=========  |  |   [Frame#2]
| |           |  |
| =============  |
|                |
|                |
|                |
==================