用于打开 URL 的 Google Apps 脚本

新手上路,请多包涵
阅读 729
2 个回答

您可以构建一个小的 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");
}

原文由 Serge insas 发布,翻译遵循 CC BY-SA 4.0 许可协议

此函数 无需额外的用户交互即可 打开 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 服务的上下文中工作,例如脚本编辑器或自定义 G Sheets 公式。

原文由 Stephen M. Harris 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题