【问题标题】:How to get the current active sheet in my script?如何在我的脚本中获取当前活动工作表?
【发布时间】:2013-11-19 23:40:06
【问题描述】:

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

【问题讨论】:

  • That code 不包含或使用getCurrentRow(),那么您能否详细说明两者之间的关系?你如何调用getCurrentRow()

标签: google-apps-script google-sheets


【解决方案1】:

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

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

  return currentRow;
}

我运行了脚本,它为我提供了打开的工作表/选择了哪个单元格的正确结果。所以我会说这段代码几乎可以像你期望的那样工作。

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

【讨论】:

    【解决方案2】:

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

    什么对我有用:

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

    还有:

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

    【讨论】:

      【解决方案3】:

      您是否将函数用作公式?

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

      Sheet1(主动)应用公式:

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

      【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 谢谢@zig Mandel,但我没有从自定义函数中使用它。我正在使用此代码:opensourcehacker.com/2013/01/21/…
      • 这仍然是这里唯一有效的答案,尽管最近投了反对票。如果您不了解确定性函数,请随时与我联系。
      【解决方案5】:

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

      【讨论】:

      • 这是基本信息,并不能解决问题。
      猜你喜欢
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多