【问题标题】:google spreadsheet - open external URL from button [duplicate]谷歌电子表格 - 从按钮打开外部 URL [重复]
【发布时间】:2018-10-12 19:47:35
【问题描述】:

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

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

感谢您的帮助

【问题讨论】:

  • 欢迎。要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。取而代之的是describe the problem 以及迄今为止为解决该问题所做的工作。

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


【解决方案1】:

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

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');
}

此代码使用脚本创建一个对话框,该脚本打开它从工作表中读取的链接,然后调用google.script.host.close() 以摆脱该对话框。 不幸的是,这似乎不起作用,并且花了一段时间才弄清楚原因。

answer 是大多数流行浏览器中的弹出窗口阻止程序仅允许打开一个新窗口,前提是它是由直接用户操作(例如单击)运行的代码导致的。

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

说服用户关闭弹出窗口阻止的可能性极小,因此我认为没有办法让您有一个打开新浏览器选项卡的按钮。我认为你能做的最好的事情是有一个按钮来打开一个对话框,该按钮或一个链接将打开新的浏览器选项卡。

【讨论】:

    猜你喜欢
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 2015-01-02
    相关资源
    最近更新 更多