将焦点重新设置为电子表格

时间:2018-01-02 15:51:23

标签: google-apps-script google-sheets

我正在运行一些链接到我的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)以满足我的需求。我希望有人澄清如何为我的情况应用解决方案。

3 个答案:

答案 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)

如果您使用电子表格上的图像/绘图来调用脚本,则无法以编程方式将焦点设置在电子表格单元格或选择上。

您可以设置活动单元格或选区,但不要将焦点设置在它们上。

answerMoving browser focus in Google Apps using Ui Service API(由OP引用)意味着使用HTML服务,因为正在使用侧边栏,因此可以使用。