SitesApp.getActivePage()始终返回首页的技术问题咨询
解决
SitesApp.getActivePage()总是返回首页名称的问题 嘿,我来帮你搞定这个困扰!你遇到的问题其实是因为Google Apps Script的Web App(也就是doGet函数运行的环境)和Google Sites页面的上下文不是直接绑定的。SitesApp.getActivePage()在Web App里默认只会返回站点的首页,因为Web App是独立部署的,它没办法自动感知用户当前正在浏览的Sites页面。
那怎么解决呢?给你两个靠谱的方案:
方案1:通过URL传递页面名称参数(最推荐)
你可以让用户访问Web App时,在URL里带上目标页面的名称作为参数,然后在doGet里读取这个参数,再精准定位到对应的页面。
示例代码如下:
function doGet(e) { // 第一步:替换成你的Google Sites的完整URL const siteUrl = "https://sites.google.com/your-domain/your-site-name"; const site = SitesApp.getSiteByUrl(siteUrl); // 从URL参数里获取要查询的页面名称 const targetPageName = e.parameter.page; if (targetPageName) { const targetPage = site.getPageByName(targetPageName); if (targetPage) { const pageName = targetPage.getName(); Logger.log(pageName); // 如果你需要给前端返回结果,可以用HtmlService输出 return HtmlService.createHtmlOutput(`当前页面名称:${pageName}`); } else { Logger.log("找不到指定的页面"); return HtmlService.createHtmlOutput("错误:找不到指定的页面"); } } else { Logger.log("未传递页面参数"); return HtmlService.createHtmlOutput("请在URL后添加参数,例如:?page=你的页面名称"); } }
使用的时候,访问Web App的URL就变成:https://script.google.com/macros/s/你的Web AppID/exec?page=目标页面名称
方案2:嵌入页面时利用上下文(局限性较大)
如果你的Web App是直接嵌入到Google Sites的某个页面里的,理论上可以尝试读取嵌入时的上下文参数,但这种方法稳定性不高,因为Google Sites的嵌入参数可能会变动。相比之下,方案1的参数传递法更可靠。
总结一下:Web App没有办法自动获取用户当前浏览的Sites页面,必须通过明确的参数传递或者指定站点URL+页面名称的方式来获取目标页面的信息,这样就能避免总是返回首页名称的问题啦!
内容的提问来源于stack exchange,提问作者Mahmoud Hadad
相关产品推荐
相关产品推荐

