我在Google Apps脚本中编写了一个HTML(非UI)小工具,以嵌入Google网站。小工具显示一个下拉列表,其中包含包含URL /显示名称值/文本对的选项。
我想在小工具中放一个按钮,打开一个与所选网址对应的新窗口。但是,基本上,当我执行
时,我得到一个“对象不包含'打开'方法”错误window.open(url);
有解决方法吗?我可以(并且已经)创建了具有成功打开其他窗口的锚标签的小工具,但是似乎不允许从javascript执行相同的操作。
完成功能的任何东西都可以。基于jQuery的解决方案会很棒。
感谢。
答案 0 :(得分:2)
由于Caja的清理,不支持所有javascript功能,这就是为什么无法在App Script中打开新窗口。
在App Script中显示弹出窗口的解决方法是使用覆盖窗口(技术上不是弹出窗口,但看起来像弹出窗口),如app Script脚本支持的jQuery模式对话框。
然而,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>