谷歌电子表格 - 从按钮打开外部URL

时间:2018-05-02 16:10:52

标签: function url button google-apps-script google-sheets

我对谷歌电子表格脚本有非常基本的了解。

现在我正在寻找一些通过点击按钮打开外部URL的功能。这是我想通过单击按钮打开工作表的链接:http://h22235.www2.hp.com/hpinfo/globalcitizenship/environment/productdata/Countries/us/ii_q4135b_us_eng_v18.pdf

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

这听起来很简单,但实际上这是一个非常棘手的要求。

Google Apps脚本不会自动打开网页。您可以创建一个HYPERLINK,您的用户可以点击它,但您似乎无法自动启动它。如果您为此操作录制一个宏,它只有Cell的activate()函数,但没有打开新浏览器的行。

过时的建议解决方案是打开一个自定义对话框,其中包含用户可以单击以打开新选项卡的链接或按钮,这可以使用HtmlService完成。

this question的第三个答案有代码来创建一个带有链接的对话框,这段代码效果很好。

var htmlOutput = HtmlService
    .createHtmlOutput('Go to <a href="https://www.google.ca/">this site</a> for help!')
    .setWidth(250) //optional
    .setHeight(50); //optional
SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Help Dialog Title');

它并不完全是所要求的内容,因为它要求用户点击链接并且他们已经点击了按钮或其他内容以进入对话框。

在对话框中编写一些javascript以自动调用window.open()这似乎很简单,这就是提议的here

function openTab() {
  var selection = SpreadsheetApp.getActiveSheet().getActiveCell().getValue();

  var html = "<script>window.open('" + selection + "');google.script.host.close();</script>";
  var userInterface = HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showModalDialog(userInterface, 'Open Tab');
}

此代码使用脚本创建一个对话框,该脚本打开从Sheet中读取的链接,然后调用google.script.host.close()以删除对话框。 不幸的是,这似乎不起作用,需要一段时间来弄清楚原因。

answer是大多数流行浏览器中的弹出窗口阻止程序只允许打开一个新窗口,因为代码是通过直接用户操作(如点击)运行而打开的。

您可以通过关闭Chrome中的弹出窗口阻止来验证这一点,并且代码可以正常工作。

您极不可能说服您的用户关闭弹出窗口阻止功能,因此我认为您无法使用按钮打开新的浏览器标签。我认为你能做的最好的事情就是有一个按钮,打开一个带有按钮的对话框或一个打开新浏览器标签的链接。