如何在Google Apps脚本HTML Google Site Gadget中从JavaScript打开URL链接

时间:2014-02-12 19:26:18

标签: javascript google-apps-script google-caja

我在Google Apps脚本中编写了一个HTML(非UI)小工具,以嵌入Google网站。小工具显示一个下拉列表,其中包含包含URL /显示名称值/文本对的选项。

我想在小工具中放一个按钮,打开一个与所选网址对应的新窗口。但是,基本上,当我执行

时,我得到一个“对象不包含'打开'方法”错误
window.open(url);

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

完成功能的任何东西都可以。基于jQuery的解决方案会很棒。

感谢。

4 个答案:

答案 0 :(得分:2)

由于Caja的清理,不支持所有javascript功能,这就是为什么无法在App Script中打开新窗口。

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

  

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

然而,App Script不支持 iframe 标记,因此尝试在iframe标记的帮助下在模态窗口中打开网址将无效。

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

  

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

希望它有所帮助!

答案 1 :(得分:2)

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

Here's a demo sheet(复制一下以查看脚本)。

openNewWindow()被分配给按钮。

Code.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...');  
}

答案 2 :(得分: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>

答案 3 :(得分: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>