如何通过单击按钮从Google表格中的单元格打开网站?

时间:2018-09-25 08:18:52

标签: google-apps-script google-sheets

我正在使用Google表格制作电子表格,其中有多个指向预填写的Google表单的链接https://docs.google.com/forms 。我在电子表格中添加了一个“按钮”,当您单击它时,它会导航到包含指向预填写表格的正确链接的单元格(当前活动单元格右边的16个单元格),看起来像;

function GoToSite(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
// Returns the active cell
var cell = sheet.getActiveCell();
cell.offset(0,16).activate();
};  

但是,我无法使电子表格打开此链接。我知道在一个普通的excel文件中,您将使用类似于以下内容的文件:

Sub openwebpage ()
... 
End Sub

您将使用“ FollowHyperlink” /“创建IE对象” /“.Navigate”甚至“ Sendkeys”(如果在选择了包含预填充链接的单元格时输入alt + enter,则会打开网页)。但是所有这些选项都与sub .. end sub结合使用,我无法管理宏来识别这一点。似乎仅适用于

function example (){
...
};

也许我做错了什么。是否有人会知道如何使用宏在单元格中打开链接?或者如何在Google工作表中使用“ Sub ... End Sub”?

谢谢

1 个答案:

答案 0 :(得分: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 ..." );
}

该解决方案的作者指出,您将无法直接在“脚本编辑器”中运行此代码,需要将脚本分配给图形或按钮。

Google Apps Script to open a URL