这听起来很简单,但实际上是一个相当棘手的要求。
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 中的弹出窗口阻止来验证这一点,并且代码可以正常工作。
说服用户关闭弹出窗口阻止的可能性极小,因此我认为没有办法让您有一个打开新浏览器选项卡的按钮。我认为你能做的最好的事情是有一个按钮来打开一个对话框,该按钮或一个链接将打开新的浏览器选项卡。