1

我在 Google Apps 脚本中编写了一个 HTML(不是 UI)小工具,以嵌入到 Google 站点中。该小工具会显示一个下拉菜单,其中包含包含 URL/显示名称值/文本对的选项。

我想在小工具中放置一个按钮,该按钮会打开一个与所选 URL 对应的新窗口。但是,基本上,我在执行时收到“对象不包含‘打开’方法”错误

window.open(url);

有没有解决的办法?我可以(并且已经)创建了带有成功打开其他窗口的锚标记的小工具,但似乎不允许从 javascript 执行相同的操作。

任何实现功能的东西都很好。基于 jQuery 的解决方案会很棒。

谢谢。

4

4 回答 4

2

您可以使用 HTMLService 在对话框中运行 window.open() JS 直接打开链接。

这是一个演示表(复制以查看脚本)。

openNewWindow() 被分配给按钮。

代码.gs:

function openNewWindow() {

  var htmlString = 
    '<div>' + 
      '<input type="button" value="Close" onclick="google.script.host.close()" />' + 
    '</div>' +
    '<script>window.open("http://www.google.com")</script>';

  var htmlOutput = HtmlService
    .createHtmlOutput(htmlString)
    .setSandboxMode(HtmlService.SandboxMode.IFRAME)
    .setHeight(60);

  SpreadsheetApp
    .getUi()
    .showModalDialog(htmlOutput, 'Opening New Window...');  
}
于 2015-03-11T11:37:45.447 回答
2

由于 Caja 的清理,所有的 javascript 函数都不受支持,这就是为什么不能在 App Script 中打开新窗口的原因。

在 App Script 中显示弹出窗口的解决方法是使用叠加窗口(技术上不是弹出窗口,但看起来像弹出窗口),如 App Script 中支持的 jQuery 模态对话框。

http://jqueryui.com/dialog/#modal-form

但是,App 脚本不支持iframe标签,因此尝试借助 iframe 标签在模态窗口中打开 url 将不起作用。

您可以从下面的链接中阅读有关 App Script 中这些限制的更多信息:

https://developers.google.com/apps-script/guides/html/restrictions **

希望能帮助到你!

于 2014-11-22T15:22:02.313 回答
1

由于 caja 消毒,不可能这样做。下面的选项将不起作用。

1) jquery - $("#some_link_id").click() 2) javascript - window.open、window.href 等...

唯一的解决方法,但我想这不适合您的问题是使用 target="_blank" 创建链接以打开新窗口,但正如我所说,通过 javascript/jquery 无法单击这些链接。

<a href="http://www.google.com" id="my_link" class="abc" target="_blank">My Link</a>
于 2014-02-13T12:23:49.187 回答
0

我能够使用表单来实现这一点。提交时,将表单的操作设置为所需的 URL,由选择框中的选定项目确定。

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>
    $('document').ready(function(){
       $('#yourForm').attr('onsubmit',null); //set onsubmit to Null for NATIVE Caja sandboxmode

       $('#yourForm').submit(function(){
          var val = $('#yourSelect').val();  //get value of select box
          $('#yourForm').attr('action',val); //set action of form
       });
    });
    </script>
    <div>
    <select id="yourSelect">
       <option value="https://www.google.com">Google</option>
       <option value="https://www.bing.com">Bing</option>
    </select>

    <form id="yourForm" method="get" target="_blank" action="">
    <input type="submit" value="Open Selected">
    </form>

    </div>
于 2014-11-25T20:26:40.570 回答