10

我正在使用此代码在 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/

4

5 回答 5

16

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

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

  return currentRow;
}

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

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

于 2013-12-05T08:40:28.143 回答
2

我在脚本编辑器中开发时遇到了同样的问题——脚本编辑器实例/窗口与工作表实例/窗口“断开连接”,只有第一个工作表/A1 等作为“活动”。

什么对我有用:

关闭脚本编辑器窗口并从工作表 > 工具 > 脚本编辑器重新打开。瞧,.getActive...()s又开始工作了。

还:

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

于 2017-06-02T23:24:00.893 回答
0

你用你的函数作为公式吗?

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

Sheet1(Active) 中应用公式:

在此处输入图像描述

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

在此处输入图像描述

于 2013-11-08T09:00:35.813 回答
0

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

于 2013-11-08T14:18:09.810 回答
-3

在谷歌驱动器中创建一个电子表格并保存。在电子表格中,转到工具菜单和脚本编辑器并键入函数。

于 2015-08-17T01:50:27.993 回答