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

Function 谷歌电子表格-从按钮打开外部URL,function,url,button,google-apps-script,google-sheets,Function,Url,Button,Google Apps Script,Google Sheets,我有谷歌电子表格脚本的基本知识 现在我正在寻找一些功能,通过点击按钮打开一个外部URL。这是我希望通过单击按钮从工作表中打开的链接: 感谢您的帮助这听起来很简单,但实际上是一个相当棘手的要求 谷歌应用程序脚本不会自动打开网页。您可以创建一个超链接,用户可以单击它,但您似乎无法自动启动它。如果为此操作录制宏,则该宏只有单元格的activate()函数,但没有打开新浏览器的行 过时的建议解决方案是打开一个自定义对话框,其中有一个链接或按钮,用户可以单击该链接或按钮打开新选项卡,这可以使用HtmlSe

我有谷歌电子表格脚本的基本知识

现在我正在寻找一些功能,通过点击按钮打开一个外部URL。这是我希望通过单击按钮从工作表中打开的链接:


感谢您的帮助

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

谷歌应用程序脚本不会自动打开网页。您可以创建一个超链接,用户可以单击它,但您似乎无法自动启动它。如果为此操作录制宏,则该宏只有单元格的activate()函数,但没有打开新浏览器的行

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

第三个答案的代码是创建一个带有链接的对话框,该代码运行良好

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');
var htmlOutput=HtmlService
.createHtmlOutput('转到寻求帮助!')
.setWidth(250)//可选
.设置高度(50)//可选择的
SpreadsheetApp.getUi().showModalDialog(htmlOutput,“帮助对话框标题”);
这并不完全是请求的内容,因为它要求用户单击链接,而他们已经单击了按钮或其他东西才能进入对话框

对您来说,在对话框中编写一些javascript来自动调用window.open()似乎很简单,这就是建议的内容

函数openTab(){
var selection=SpreadsheetApp.getActiveSheet().getActiveCell().getValue();
var html=“window.open”(“+selection+”);google.script.host.close();”;
var userInterface=HtmlService.createHtmlOutput(html);
SpreadsheetApp.getUi().showModalDialog(用户界面,“打开选项卡”);
}
这段代码创建了一个带有脚本的对话框,该脚本打开它从工作表中读取的链接,然后调用
google.script.host.close()
以摆脱该对话框。 不幸的是,这似乎不起作用,花了一段时间才弄清楚原因

最重要的是,大多数流行浏览器中的弹出窗口拦截器只允许在通过直接用户操作(如单击)打开新窗口的情况下打开该窗口

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


你不太可能说服你的用户关闭弹出窗口阻止,所以我不认为有一个按钮可以打开一个新的浏览器标签。我认为您最好使用一个按钮打开对话框,其中包含一个按钮或一个链接,可以打开新的浏览器选项卡。

欢迎使用。要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于堆栈溢出来说是离题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,以及迄今为止为解决这一问题所做的工作。
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');
}