【发布时间】:2020-06-04 19:35:36
【问题描述】:
我是 Google 表格和 Apps 脚本的新手。我有一张带有两个 URL 的表格。在单元格 F1 中是 http://testurl1.com,在单元格 G1 中是 http://testurl2.com。
我想在单元格 D1 中有一个按钮或链接或其他东西,当我单击它时,它将打开这两个链接。我可以使用 Alt-Enter 手动执行此操作,但无法将其转换为代码。
我已经能够从一个菜单项打开这两个 url,但是当我尝试从一个单元格调用代码时,它说
例外:无法从此上下文中调用 SpreadsheetApp.getUi()。
但代码可以从菜单项中运行。诡异的。我目前正在尝试使用的代码如下,但我愿意接受任何建议!
function callOthers() {
myFunction()
Utilities.sleep(1500);
myFunction2()
}
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var selection = sheet.getRange("F1").getValue();
var html = "<script>window.open('" + selection + "');google.script.host.close();</script>";
var userInterface = HtmlService.createHtmlOutput(html);
SpreadsheetApp.getUi().showModalDialog(userInterface, 'Open Tab');
}
function myFunction2() {
var sheet = SpreadsheetApp.getActiveSheet();
var selection2 = sheet.getRange("G1").getValue();
var html2 = "<script>window.open('" + selection2 + "');google.script.host.close();</script>";
var userInterface2 = HtmlService.createHtmlOutput(html2);
SpreadsheetApp.getUi().showModalDialog(userInterface2, 'Open Tab');
}
【问题讨论】:
-
这取决于您如何使用
myFunction和myFunction2。 自定义函数和普通函数是有区别的。所有函数都“存在”在脚本项目中,而不是单元格中。getUI()方法需要用户授权,因此不能在自定义函数的上下文中运行(这正是错误所说的)。但是您可以使用“按钮”(通过图纸/图像)或菜单项来运行它们 -
有没有更简单的方法可以在没有代码的情况下一次打开两个链接?还是更好的编码方式?谢谢!
-
是的,这就是所谓的用户 :) 但是,说真的,我认为这是你能做的最好的任务。即使这不是recommended 的做法,不管它看起来多么方便。用户应该对如何打开链接有发言权(ofc,这可能完全符合您的目的)
-
感谢奥列格提供的信息!我选择了按钮选项,它正在工作。
-
您好@OlegValter 您能否将您的评论作为答案发布,以便为了更好的文档目的而对其进行投票和接受?
标签: javascript html google-apps-script google-sheets