使用Javascript检索AppScript的URL

使用Javascript检索AppScript的URL,javascript,html,url,google-apps-script,Javascript,Html,Url,Google Apps Script,我正在尝试使用新参数重新加载当前页面,但无法检索网页的正确URL。我得到的是另一个URL,而不是触发web应用程序的URL https://script.google.com/a/user/macros/s/A...ljhGC/dev?action=menu&id=1 单击按钮时,我希望操作参数的值发生更改,页面重新加载为 https://script.google.com/a/user/macros/s/A...ljhGC/dev?action=checkout&id=1

我正在尝试使用新参数重新加载当前页面,但无法检索网页的正确URL。我得到的是另一个URL,而不是触发web应用程序的URL

https://script.google.com/a/user/macros/s/A...ljhGC/dev?action=menu&id=1
单击按钮时,我希望操作参数的值发生更改,页面重新加载为

https://script.google.com/a/user/macros/s/A...ljhGC/dev?action=checkout&id=1
这是我的HTML文件中的javascript

console.log(document.url);

      var url = new URL(window.location.href);
      var query_string = url.search;
      var search_params = new URLSearchParams(query_string); 
      search_params.set('action', 'checkout');
       url.search = search_params.toString();
       var new_url = url.toString();
       window.location.replace(new_url);
       console.log(new_url);
    }

这是记录的URL

https://n-ikwx...khq-1lu-script.googleusercontent.com/userCodeAppPanel?action=checkout
如何检索地址栏中的实际URL

提前谢谢

问题: 具有不同原点的iframe无法读取父帧/顶帧位置的href属性,该属性为只读。所以,你不能

解决方案: 但是,您可以从服务器端传递url

服务器端: 客户端: 参考资料:
问题: 具有不同原点的iframe无法读取父帧/顶帧位置的href属性,该属性为只读。所以,你不能

解决方案: 但是,您可以从服务器端传递url

服务器端: 客户端: 参考资料:

虽然我不确定OP的情况,但我从
https://script.google.com/a/user/macros/s/A...ljhGC/dev
,OP可能希望以开发者模式访问Web应用程序。使用
getUrl()
时,添加信息以反映最新脚本如何?@Tanaike
[ID]/dev
[ID]/exec
的ID完全不同。是否可以访问实际的
dev
url?谢谢您的回复。对<代码>{id}of
https://script.google.com/a/可以检索{domain}/macros/s/{id}/dev
。在本例中,它使用应用程序脚本API中的projects.deployments.list方法。对于该方法的响应值,属性
deployments
的第一个索引中的
deploymentId
的值就是它。你可以在确认。但是,我不确定OP是否真的需要这个。对此我深表歉意。@Tanaike啊,是的,api。op可能不需要开发url。此外,只发布新应用程序并获取exec url要容易得多。甚至只是复制/粘贴dev url(我假设dev url{id}不会随着源代码的更改而更改),虽然我不确定OP的情况,但我认为从
https://script.google.com/a/user/macros/s/A...ljhGC/dev
,OP可能希望以开发者模式访问Web应用程序。使用
getUrl()
时,添加信息以反映最新脚本如何?@Tanaike
[ID]/dev
[ID]/exec
的ID完全不同。是否可以访问实际的
dev
url?谢谢您的回复。对<代码>{id}of
https://script.google.com/a/可以检索{domain}/macros/s/{id}/dev
。在本例中,它使用应用程序脚本API中的projects.deployments.list方法。对于该方法的响应值,属性
deployments
的第一个索引中的
deploymentId
的值就是它。你可以在确认。但是,我不确定OP是否真的需要这个。对此我深表歉意。@Tanaike啊,是的,api。op可能不需要开发url。此外,只发布新应用程序并获取exec url要容易得多。甚至只是复制/粘贴dev url(我假设dev url{id}不会随着源代码的更改而更改)
function getTopUrl(){
  return ScriptApp.getService().getUrl();
}
var topUrl;
function getTop(){
  google.script.run.withSuccessHandler((url)=>{topUrl=url;}).getTopUrl();
}
window.addEventListener('load', getTop);