我正在运行一些链接到我的Google电子表格上的按钮的Google脚本。单击按钮以运行脚本后,即使仍在查看电子表格并且所选单元格仍然可见,焦点在电子表格窗口上也会丢失。我必须单击窗口才能返回焦点。
这听起来与the one asked by robodog21非常相似。 Ed Nelson的解决方案涉及带有执行HTML命令的按钮的侧边栏google.script.host.editor.focus()效果很好,但我真的不想涉及侧边栏。如果可能的话,我宁愿坚持现有的按钮。它们作为Google绘图插入电子表格中,然后链接到相应的Javascript函数。
正如robodog21指出的那样,我对Javascript和HTML也很陌生。我在Google Apps脚本中找到了以下帮助:
在G Suite中移动浏览器焦点
要将用户浏览器中的焦点从对话框或侧边栏切换回Google文档,表格或表单编辑器,只需调用方法google.script.host.editor.focus()即可。此方法与Document服务方法Document.setCursor(position)和Document.setSelection(range)结合使用时特别有用。
但由于我对HTML的熟悉程度有限,我还没弄清楚如何实现这一点。
我无法在Stack Overflow中找到专门针对Google Apps脚本的解决方案,并且不太了解(还有!)修改其他解决方案(例如this)以满足我的需求。我希望有人澄清如何为我的情况应用解决方案。
答案 0 :(得分:1)
在阅读了Rubén的回答并让我自己使用侧边栏后,我一直在玩我的脚本,并意识到将焦点返回到电子表格只需打开和关闭侧边栏即可。最低HTML似乎是:
<html>
<body onload="google.script.host.close()">
</body>
</html>
这在JS函数中调用:
function sidebarCreator() {
var html = HtmlService.createHtmlOutputFromFile('Page');
SpreadsheetApp.getUi()
.showSidebar(html)
}
我意识到这个实现有点乱,因为它拉出了我实际上并不想要的侧边栏然后立即关闭它。然而,它完成了我想要的,没有其他更改我现有的按钮和功能,所以我很高兴。如果有人知道更好的方法来实现这个结果,请告诉我。感谢Rubén指出我正确的方向!
答案 1 :(得分:1)
以下内容适用于我的应用程序,但OP可能接受或可能不接受:
在范围选择之前添加如下内容:
Browser.msgBox("Ready to add a Venue?",Browser.Buttons.Yes)
答案 2 :(得分:0)
如果您使用电子表格上的图像/绘图来调用脚本,则无法以编程方式将焦点设置在电子表格单元格或选择上。
您可以设置活动单元格或选区,但不要将焦点设置在它们上。
answer到Moving browser focus in Google Apps using Ui Service API(由OP引用)意味着使用HTML服务,因为正在使用侧边栏,因此可以使用。