来自href函数的URL与字符串

时间:2018-01-19 12:43:38

标签: google-apps-script google-sites

我正在尝试根据函数的结果来更改URL。  如果href是一个字符串,它将转到我想要的google网站页面。但是,使用函数不会导致相同的行为。谁能告诉我哪里出错了?

脚本HTML

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <?var previewURL = PageForPreview();?><a href="#" onClick="window.open<?=previewURL?>" id="link" target="_blank" ></a> 
    <!-- < ?var previewURL = PageForPreview();?><a href="< ?=previewURL?>" id="link" target="_blank" ></a> document.location.href=//-->
    <!-- <a href="#" onClick="document.location.href=PageForPreview();" id="link" target="_blank" ></a>//-->
    <!-- <a href="https://sites.google.com/a/ENTER A SITE" id="link" target="_blank" ></a> //-->
  </body>
  <script>
    document.getElementById("link").click();
    //google.script.host.close();
  </script>
</html>

Code.gs

////### go to preview page
function PageForPreview() {
  var site = SitesApp.getActiveSite();
  var newchildPages = site.getAllDescendants();
  for(var ii in newchildPages) {
    if (newchildPages[ii].getName() === "PreviewName") {
      var arrLatest = ii;
    } 
  }
  var previewURL = newchildPages[arrLatest].getUrl();
  Logger.log("prev = "+previewURL);
  return previewURL;
}

我打算在谷歌网站上有一个按钮来运行一个网络应用程序。脚本运行正常,直到我尝试打开页面(上面的部分),然后只在新窗口中显示当前页面。当我从脚本编辑器部署代码时,它使用网站URL的文本字符串按预期工作,但是使用该函数,它会在新窗口中打开宏URL,然后在另一个窗口中打开网址https://n-ycp7azn7ycatih3bdzb2ibru6gld2ohyqxhk4xy-0lu-script.googleusercontent.com/userCodeAppPanel#

所以我有一个问题,即href中的字符串没有以相同的方式起作用,而且我的页面上的按钮也没有进入预览页面,即使href是一个字符串。

接下来要研究的是JSONP,但我对任何编码都没什么经验。 https://developers.google.com/apps-script/guides/content#serving_jsonp_in_web_pages任何指导都表示赞赏。

编辑 我现在能够从脚本编辑器部署Web应用程序时显示所需的页面。当按下谷歌网站上的按钮来部署网络应用程序时仍然无法显示它。不确定它是否与我的代码或按钮的HTML有关(或者它是不可能的)。

  return HtmlService.createHtmlOutput('<!DOCTYPE html><html><head><base target="_top"></head><script>'
  +'var a = document.createElement("a"); a.href="'+PageForPreview()+'"; a.target="_blank";'
  +'if(document.createEvent){'
    +'var event=document.createEvent("MouseEvents");'
    +'event.initEvent("click",true,true);'
    +'a.dispatchEvent(event);'
  +'}else{'
    +'a.click()'
  +'}'
  //+'google.script.host.close();'
  +'</script></html>').setWidth( 90 ).setHeight( 10 );
  output.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
  SpreadsheetApp.getUi().showModalDialog( myhtml, "Please Wait..." );

0 个答案:

没有答案