2014-02-12 75 views
1

我已經在Google Apps腳本中編寫了一個HTML(非用戶界面)小工具,以嵌入到Google Site中。該小工具顯示包含URL /顯示名稱值/文本對的選項的下拉列表。如何在Google Apps腳本中使用JavaScript打開URL鏈接HTML Google Site Gadget

我想在小工具中放置一個按鈕,以打開與所選URL對應的新窗口。但是,基本上,我得到一個當我執行

window.open(url); 

有沒有辦法解決「對象不包含一個‘開放式’方法」的錯誤?我可以(也有)創建了帶有成功打開其他窗口的錨標記的小工具,但是從javascript執行相同的操作似乎不被允許。

任何完成該功能都很好。基於jQuery的解決方案將非常棒。

謝謝。

回答

1

由於caja消毒不可能這樣做。以下選項不起作用。

1)jQuery的 - $( 「#some_link_id」)點擊() 2)的JavaScript - window.open,window.href等..

唯一的解決方法,但我想這將不適合你的問題是創建鏈接與目標=「_空白」來打開新的窗口,但正如我所說的是不可能點擊這些鏈接,雖然JavaScript/jQuery的。

<a href="http://www.google.com" id="my_link" class="abc" target="_blank">My Link</a> 
2

由於卡哈的消毒,所有的JavaScript功能,不支持,這就是爲什麼無法打開應用程序腳本的新窗口。

在App Script中顯示彈出窗口的解決方法是使用覆蓋窗口(技術上不是彈出窗口,但顯示爲彈出窗口),如應用程序腳本支持的jQuery模式對話框。

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

然而IFRAME標籤不是在應用程序的腳本支持,所以試圖打開模態窗口的URL iframe標記的幫助下將無法正常工作。

您可以通過下面的鏈接瞭解更多關於在應用程序腳本,這些限制:

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

希望它能幫助!

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