有没有办法编写一个谷歌应用程序脚本,所以当运行时,第二个浏览器窗口打开www.google.com(或我选择的其他网站)?Google Apps脚本打开一个URL
我试图想出一个解决我刚才的问题在这里: Can I add a hyperlink inside a message box of a Google Apps spreadsheet
有没有办法编写一个谷歌应用程序脚本,所以当运行时,第二个浏览器窗口打开www.google.com(或我选择的其他网站)?Google Apps脚本打开一个URL
我试图想出一个解决我刚才的问题在这里: Can I add a hyperlink inside a message box of a Google Apps spreadsheet
你可以建立一个小的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);
}
如果你想以“显示”的网址,只需改变这一行是这样的:
var link = app.createAnchor(href, href).setId("link");
编辑:link to a demo spreadsheet在读只有,因为太多的人不断写入不需要的东西...做一个副本使用。
编辑:! 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");
}
之间的唯一区别这两个:
是在第一种情况下链接将在对话框中显示“打开”。到目前为止,我找不到自动打开链接的方法......(请参见https://developers.google.com/apps-script/class_anchor)。
唯一的其他方法来自动打开一个文档似乎是:
变种DOC = DocumentApp.openById(foundFile.getId());
但我不确定应该用doc做什么!即没有doc.show()...
Google Apps脚本不会自动打开网页,但它可以用来显示带有链接或按钮的消息,用户可以点击它们以打开所需的网页页面。
值得注意的是,UiApp现在已被弃用。从Class UiApp - Google Apps Script - Google Developers
已弃用。 UI服务是deprecated on December 11, 2014。至 创建用户界面,请改为使用HTML service。
在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);
}
指数的定制版本。HTML显示两个超链接
<a href='http://stackoverflow.com' target='_blank'>Stack Overflow</a>
<br/>
<a href='http://meta.stackoverflow.com/' target='_blank'>Meta Stack Overflow</a>
该功能打开一个URL ,而不需要额外的用户交互。
/**
* Open a URL in a new tab.
*/
function openUrl(url){
var html = HtmlService.createHtmlOutput('<html><script>'
+'window.close = function(){window.setTimeout(function(){google.script.host.close()},9)};'
+'var a = document.createElement("a"); a.href="'+url+'"; a.target="_blank";'
+'if(document.createEvent){'
+' var event=document.createEvent("MouseEvents");'
+' if(navigator.userAgent.toLowerCase().indexOf("firefox")>-1){window.document.body.append(a)}'
+' event.initEvent("click",true,true); a.dispatchEvent(event);'
+'}else{ a.click() }'
+'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="window.close()">Click here to proceed</a>.</body>'
+'<script>google.script.host.setHeight(40);google.script.host.setWidth(410)</script>'
+'</html>')
.setWidth(90).setHeight(1);
SpreadsheetApp.getUi().showModalDialog(html, "Opening ...");
}
此方法通过创建一个临时对话框,这样就不会在上下文在UI服务无法访问,如脚本编辑器或自定义摹床单公式工作。
谢谢你黑客。我测试过它没有运气:(我使用了一个自定义菜单,并在Mozilla中测试了脚本,脚本使用这个URL打开了一个新选项卡:'about:blank'。 –
@MaxMakhrov的确的确如此!在Firefox中出现程序性点击一直存在问题,但现在该脚本可靠地显示了Firefox中的“无法打开”回退并为用户提供了工作链接。 –
我将你的函数添加到我的电子表格中,运行它,它什么也没做。电子表格顶部显示“正在运行的脚本测试”,然后显示“已完成的脚本测试”,但没有发生任何事情。我尝试用你提供的附加行替换那一行,但它是相同的结果。 –
用户界面显示在电子表格窗口中,您能告诉您正在使用的浏览器,或者您是否已经在电子表格中使用其他UI示例? –
我已经试过Chrome和IE8 –