如何在我的脚本中获取当前活动表?

时间:2013-11-08 03:15:29

标签: google-apps-script google-sheets

我正在使用此代码在Google Apps脚本中使用数据:

function getCurrentRow() {
      var currentRow = SpreadsheetApp.getActiveSheet().getActiveSelection().getRowIndex();
      return currentRow;
    }

但是当我使用除第一张之外的其他纸张(数字“gid = 0”)时,我的功能仍然是从第一张纸上获取数据而不是从我当前的活动纸张中获取数据。由于我使用方法.getActiveSheet(),我该如何解决?

PS - 我不是从单元格调用代码。我正在使用此代码: http://opensourcehacker.com/2013/01/21/script-for-generating-google-documents-from-google-spreadsheet-data-source/

5 个答案:

答案 0 :(得分:11)

我从头开始创建了一个全新的电子表格,在其中,我创建了一些标签/表格,每个标签/表格中包含一些数据;然后在该电子表格中的谷歌应用程序脚本中,我安装了以下代码:

function getCurrentRow() {
  var currentSelection = SpreadsheetApp.getActiveSheet().getActiveSelection()
  var currentValue = currentSelection.getValue();
  var currentRow = currentSelection.getRowIndex();
  Logger.log(currentValue);
  Logger.log(currentRow);

  return currentRow;
}

我运行了脚本,它给了我打开的工作表/选择了哪个单元格的正确结果。所以我想说这段代码几乎可以按预期工作。

在您的情况下,我是否可以建议以最快的方式获取有关错误的更多信息,或查看错误是否仍然存在,是否也是从头开始,使用新的电子表格,并粘贴上面的代码,然后进行测试以证明至少那么多也适合你。然后,只有在此之后,粘贴更大的代码(您已链接到),并查看它是否仍然/停止工作。

答案 1 :(得分:2)

我在脚本编辑器中进行开发时遇到了同样的问题 - 脚本编辑器实例/窗口与Sheets实例/窗口“断开连接”,只有第一张/ A1等作为“活动”。< / p>

对我有用的是什么:

关闭“脚本编辑器”窗口并从“工作表”重新打开&gt;工具&gt;脚本编辑器。瞧,.getActive...()s正在再次工作。

此外:

正如其他一些答案所暗示的那样,从Sheets窗口/实例(可能总是)触发执行也有效。其中一个答案从单元格调用一个函数,这意味着它将由Sheet触发。另一种选择是添加.UI菜单和菜单选项并在那里触发它。

答案 2 :(得分:0)

您是否将您的功能用作公式?

也许我不太了解这种情况,但是使用您的代码作为公式,它可以按预期工作。

Sheet1(有效)中应用以下公式:

enter image description here

然后手动更改Sheet2(有效)并再次应用公式:

enter image description here

答案 3 :(得分:0)

因为您是从单元格中的自定义函数调用它。你不能这样做,因为自定义函数必须是确定性的。 wchiquito的答案是有效的,因为他正在使用不同的细胞来尝试第二种情况。如果您使用相同的单元格,它将显示旧的缓存结果。搜索s.o.关于dedeterministic函数的问题。我提供了workarrounds(基本上传递第二个param = now()

答案 4 :(得分:-3)

在Google云端硬盘中创建一个电子表格并保存。 在电子表格中,转到工具菜单和脚本编辑器 并输入函数。