我正在尝试根据函数的结果来更改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..." );