Google Apps脚本打开一个URL

有没有办法写一个谷歌应用程序脚本,所以当运行,第二个浏览器窗口打开www.google.com(或我select的另一个网站)?

我正在尝试针对上一个问题提出一个解决方法: 可以在Google Apps电子表格的消息框中添加超链接

你可以build立一个小UI来完成这个工作:

function test(){ showURL("http://www.google.com") } // function showURL(href){ var app = UiApp.createApplication().setHeight(50).setWidth(200); app.setTitle("Show URL"); var link = app.createAnchor('open ', href).setId("link"); app.add(link); var doc = SpreadsheetApp.getActive(); doc.show(app); } 

如果你想'显示'的url,只要改变这样的行:

  var link = app.createAnchor(href, href).setId("link"); 

编辑: 链接到 只读 的演示电子表格 ,因为太多的人不断写入不需要的东西…做一个副本使用。

编辑:! UiApp在2014年12月11日被Google贬值,此方法随时可能中断,需要更新才能使用HTML服务。 !

编辑:下面是使用html服务的实现。

 function testNew(){ showAnchor('Stackoverflow','http://stackoverflow.com/questions/tagged/google-apps-script'); } function showAnchor(name,url) { var html = '<html><body><a href="'+url+'" target="blank" onclick="google.script.host.close()">'+name+'</a></body></html>'; var ui = HtmlService.createHtmlOutput(html) SpreadsheetApp.getUi().showModelessDialog(ui,"demo"); } 

Google Apps脚本不会自动打开网页,但它可以用来显示带有链接或button的消息,用户可以点击它们打开所需的网页。

值得注意的是,UiApp现在已经被弃用了。 UiApp类 – Google Apps脚本 – Google Developers

已过时。 UI服务已于2014年12月11日弃用 。 要创build用户界面,请改用HTML服务 。

HTML服务链接页面中的示例非常简单,

Code.gs

 // Use this code for Google Docs, Forms, or new Sheets. function onOpen() { SpreadsheetApp.getUi() // Or DocumentApp or FormApp. .createMenu('Dialog') .addItem('Open', 'openDialog') .addToUi(); } function openDialog() { var html = HtmlService.createHtmlOutputFromFile('index') .setSandboxMode(HtmlService.SandboxMode.IFRAME); SpreadsheetApp.getUi() // Or DocumentApp or FormApp. .showModalDialog(html, 'Dialog title'); } // Use this code for the older version of Sheets. function onOpen() { var menu = [{name: 'Open', functionName: 'openDialog'}]; SpreadsheetApp.getActive().addMenu('Dialog', menu); } function openDialog() { var html = HtmlService.createHtmlOutputFromFile('index') .setSandboxMode(HtmlService.SandboxMode.IFRAME); SpreadsheetApp.getActive().show(html); } 

显示两个超链接的自定义版本的index.html

 <a href='http://stackoverflow.com' target='_blank'>Stack Overflow</a> <br/> <a href='http://meta.stackoverflow.com/' target='_blank'>Meta Stack Overflow</a> 

这两者之间的唯一区别是:

  • var link = app.createAnchor('open',href).setId(“link”);
  • var link = app.createAnchor(href,href).setId(“link”);

在第一种情况下,链接将在对话框中显示“打开”。 到目前为止,我找不到自动打开链接的方法…(请参阅https://developers.google.com/apps-script/class_anchor )。

自动打开文档的唯一方法似乎是:

var doc = DocumentApp.openById(foundFile.getId());

但后来我不知道应该怎么处理文档! 即没有doc.show()…

该function打开一个URL, 而不需要额外的用户交互

 /** * Open a URL in a new tab. */ function openUrl( url ){ var html = HtmlService.createHtmlOutput('<html><script>' +'var a = document.createElement("a"); a.href="'+url+'"; a.target="_blank";' +'if(document.createEvent){var event=document.createEvent("MouseEvents");event.initEvent("click",true,true);a.dispatchEvent(event)}else{a.click()}' +'google.script.host.close();' +'</script>' // Offer URL as clickable link in case above code fails. +'<body style="word-break:break-word;font-family:sans-serif;">Failed to open automatically. <a href="'+url+'" target="_blank" onclick="google.script.host.close()">Click here to proceed</a>.</body>' +'<script>google.script.host.setHeight(40);google.script.host.setWidth(410)</script>' +'</html>') .setWidth( 90 ).setHeight( 1 ); DocumentApp.getUi().showModalDialog( html, "Opening ..." ); } 

此方法通过创build一个临时对话框来工作,所以在UI服务无法访问的上下文(例如脚本编辑器或自定义G表格公式)中不起作用。