2012-05-24 88 views

回答

21

你可以建立一个小的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"); 
} 
+1

我将你的函数添加到我的电子表格中,运行它,它什么也没做。电子表格顶部显示“正在运行的脚本测试”,然后显示“已完成的脚本测试”,但没有发生任何事情。我尝试用你提供的附加行替换那一行,但它是相同的结果。 –

+0

用户界面显示在电子表格窗口中,您能告诉您正在使用的浏览器,或者您是否已经在电子表格中使用其他UI示例? –

+0

我已经试过Chrome和IE8 –

0

之间的唯一区别这两个:

  • 变种链路= app.createAnchor( '开放式',HREF).setId( “链接”);
  • var link = app.createAnchor(href,href).setId(“link”);

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

唯一的其他方法来自动打开一个文档似乎是:

变种DOC = DocumentApp.openById(foundFile.getId());

但我不确定应该用doc做什么!即没有doc.show()...

3

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> 
3

该功能打开一个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服务无法访问,如脚本编辑器或自定义摹床单公式工作。

+0

谢谢你黑客。我测试过它没有运气:(我使用了一个自定义菜单,并在Mozilla中测试了脚本,脚本使用这个URL打开了一个新选项卡:'about:blank'。 –

+1

@MaxMakhrov的确的确如此!在Firefox中出现程序性点击一直存在问题,但现在该脚本可靠地显示了Firefox中的“无法打开”回退并为用户提供了工作链接。 –