如何在Google电子表格中捕获更改标签事件?

时间:2014-10-22 11:28:16

标签: google-apps-script google-sheets

我发现了' Google电子表格中的补充工具栏功能。非常整洁。

我有不同的标签,补充工具栏充当帮助功能。如果我选择补充工具栏中的下一步,我可以打开包含下一步的选项卡。

现在我有点卡住了。当用户选择其他选项卡时,我喜欢使用相应的信息填充补充工具栏。

虽然我知道如何填写信息,但我正在寻找触发器'运行该功能。

所以我的问题归结为:如何捕获更改标签事件?

2 个答案:

答案 0 :(得分:3)

使用How to poll a Google Doc from an add-on中演示的轮询技巧。与基于时间的触发器不同,这依赖于侧边栏html中的客户端延迟循环来调用Google服务器上的脚本。

以下是如何修改该问题的示例。

Code.gs 中的

  • 添加函数以获取当前标签名称
  • DocumentApp替换为SpreadsheetApp
  • (可选)删除所有不相关的光标/选择内容。
/**
 * Gets the name of the current tab
 *
 * @return {string} The selected tab name.
 */
function getActiveTab() {
  return SpreadsheetApp.getActiveSheet().getName();
}
HTML中的

  • poll()函数替换为此函数。
  • (可选)删除所有不相关的光标/选择内容。
<div id="tab-name">loading...</div>

...

/**
 * Poll server-side function(s) at the given interval.
 *
 * @param {Number} interval   (optional) Time in ms between polls.
 *                            Default is 2s (2000ms)
 */
function poll(interval){
  interval = interval || 2000;
  setTimeout(function(){
    google.script.run
     .withSuccessHandler(
       function(tabName) {
         // DEMO - just display name of selected tab
         $('#tab-name').text(tabName);
         //Setup the next poll recursively
         poll(interval);
       })
     .withFailureHandler(
       function(msg, element) {
         showError(msg, $('#button-bar'));
         element.disabled = false;
       })
     .getActiveTab();
  }, interval);
};

答案 1 :(得分:0)

为了让它工作,我需要在HTML的开头添加以下内容

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>

<script>
$(function() {
// Start polling for updates
poll(1000);
}); 
</script>