【问题标题】:Automatically Redirecting to a Page自动重定向到页面
【发布时间】:2012-07-03 16:50:02
【问题描述】:

在按钮点击处理程序中,我正在创建一个新网页,如下所示:

var page = SitesApp.getPageByUrl(url).createPageFromTemplate(title, name, template);

我想将用户自动重定向到该页面。

我找不到太多信息,可以这样做吗?

【问题讨论】:

标签: google-apps-script google-sites


【解决方案1】:

Corey G 的回答对我有用,但问题是我重定向的网页在 GAS 的响应中嵌入到 iframe 中,因此网络浏览器中的真实 URL 是脚本的 URL。

这实际上对我有用:

function doGet() {
  return HtmlService.createHtmlOutput(
    "<script>window.top.location.href='https://example.com';</script>"
  );
}

This similar Q/A帮我解决了。

希望对你有帮助。

【讨论】:

  • 这给了我一个错误。 “从具有 URL 'https://{id}-script.googleusercontent.com/userCodeAppPanel' 的框架中启动具有源 'script.google.com' 的框架的导航的不安全尝试。尝试导航顶级窗口的框架被沙盒化'allow-top-navigation-by-user-activation' 标志,但没有用户激活(也称为手势)。请参阅 chromestatus.com/feature/5629582019395584。"
  • 不工作了
  • 需要确保脚本包含&lt;base target="_top"&gt;,因为它为页面上的所有超链接和表单指定了默认目标。 top在整个窗口中打开链接
【解决方案2】:

这不能在 UiApp 中完成,但在 HtmlService 中是可行的:

function doGet() {
  return HtmlService.createHtmlOutput(
    "<form action='http://www.google.com' method='get' id='foo'></form>" + 
    "<script>document.getElementById('foo').submit();</script>");
}

这应该更容易;请在issue tracker 中提出功能请求,我们将看看如何让这更愉快。

(编辑:明确地说,没有办法从 UiApp 回调中执行此操作;您的整个应用程序必须使用 HtmlService 才能工作。)

【讨论】:

  • 谢谢,不幸的是,这个小部件是作为 UiApp 开始的,所以现在我通过添加一个锚点将其分为两步。我还在@Serge-insas 提供的链接中投票支持该功能。
  • 如果你仍然想要,我想到你可以通过以下稍微复杂的方式来完成这项工作: 1. 将按钮更改为锚点 2. 将锚点指向另一个脚本。 3. 让其他脚本进行处理并通过 HtmlService 方法返回重定向。根据您需要传递给第二个脚本的信息,这可能适合您,也可能不适合您。
  • 这不再起作用了。我开了一个issue它以跟踪更新。 @CoreyG 请看一下。
  • @HenriqueG.Abreu:问题的状态为“无法修复(预期行为)
  • 这个答案不再有效;请参阅 David Lopez 的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 1970-01-01
  • 2015-03-09
  • 2017-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多