首页 文章

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

提问于
浏览
4

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

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

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

PS - 我'm not calling the code from a cell. I' m使用此代码:http://opensourcehacker.com/2013/01/21/script-for-generating-google-documents-from-google-spreadsheet-data-source/

5 回答

  • 1

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

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

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

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

  • 0

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

    什么对我有用:

    关闭“脚本编辑器”窗口并从“表”>“工具”>“脚本编辑器”重新打开 . Voila, .getActive...()s 正在重新开始工作 .

    另外:

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

  • 0

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

    也许我不是很了解这种情况,但是使用你的代码作为公式,它按预期工作 .

    Sheet1 (活动)中应用公式:

    enter image description here

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

    enter image description here

  • 9

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

  • -3

    在Google Cloud 端硬盘中创建一个电子表格并保存 . 在电子表格中,转到工具菜单和脚本编辑器,然后键入该功能 .

相关问题