通过个人域名在Web应用中传递参数问题求助
解决iframe嵌入Google Apps Script Web App时参数无法传递的问题
我完全懂你遇到的困扰——直接访问Web App的URL能正常拿到id参数,但通过个人域名的iframe访问时参数就变成undefined,这其实是因为iframe里的Web App根本没接收到你个人域名页面上的URL参数。
问题根源
google.script.url.getLocation()获取的是iframe自身加载的Web App URL的参数,而不是你访问的个人域名页面的参数。当你打开http://example.com?id=1234时,id=1234是父页面的URL参数,iframe的初始src并没有携带这个参数,所以Web App自然拿不到它,只能返回undefined。
解决方案
你需要在个人域名的嵌入页面中,把当前页面的URL参数主动传递给iframe的src地址。具体做法如下:
- 修改个人域名的嵌入页面(比如
index.html),添加脚本获取当前页面参数并拼接到iframe的src上:
<!DOCTYPE html> <html> <body> <!-- 初始iframe src不带参数 --> <iframe src="https://script.google.com/a/formapprovals.com/macros/s/AKfycbw3RWnpvnpqKUa1DL2iYzDUxFSBbdP9sW5llymWlgiqLlU8Ykza/exec" id="appIframe" frameborder="0" width="100%" height="600"></iframe> <script> // 获取当前页面的URL参数 const parentParams = new URLSearchParams(window.location.search); const iframe = document.getElementById('appIframe'); // 如果有参数,拼接到iframe的src后面 if (parentParams.toString()) { // 检查src是否已有参数,避免重复加? const separator = iframe.src.includes('?') ? '&' : '?'; iframe.src += separator + parentParams.toString(); } </script> </body> </html>
- 你的Google Apps Script代码不需要任何修改——只要iframe的src带上了
id=1234,原本的google.script.url.getLocation()逻辑就能正常获取到参数并显示。
补充说明
这个方案的核心是把父页面的URL参数“转发”给iframe加载的Web App,后续如果需要传递更多参数,代码也能自动适配,不需要改动Web App的逻辑。
内容的提问来源于stack exchange,提问作者beano
相关产品推荐
相关产品推荐

