当前位置: 首页 > 知识库问答 >
问题:

如何通过谷歌应用程序脚本在谷歌工作表上编辑多行时获得真实范围

周阳波
2023-03-14

我正在使用一段谷歌脚本从一个谷歌工作表复制到另一个谷歌工作表,还做了一些列和数据操作(所以它不仅仅是一个直接的副本)。

这段代码的灵感来源于这个问题:事件触发器根据两列中的值将行移动到其他两个工作表之一

function onEdit(event) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.range;
...
}

不幸的是,当您通过高亮显示多个单元格并按空格键一次选中多个复选框时,OneEdit事件对象似乎只会检测到第一个单元格正在编辑,而其他单元格则没有被编辑。

我通过以下方式对此进行了测试:

Browser.msg框event.range.get

无论我一次编辑多少个复选框;它总是返回1

是否有一种正确的方法可以一次性获得编辑过的单元格的真实范围?

共有1个答案

萧远
2023-03-14

我看了一下Google的问题跟踪程序,发现在删除带有复选框的多个单元格时也会出现这种情况——只有第一个单元格的范围会传递给e.range。下面是一份报告,详细描述了同样的行为:

  • 从工作表中删除单元格的范围只将删除范围内的复选框范围传递给onEdit(e)事件对象

这似乎也是一个与将复选框范围传递给事件对象的方式有关的问题。

谷歌似乎确实知道这个问题,但是如果它导致了问题,你可以像上面提到的迭戈一样在这里提交你自己的错误。

你也可以在上面提到的页面左上角的发行号旁边点击☆,让谷歌知道更多的人遇到了这种情况,所以它更有可能被更快地看到。

 类似资料:
  • 我有一个电子表格从谷歌表单收集我的表单回复。 附在这张纸上的是一个脚本,它将每一行都拉出,进行一些计算,并将结果放入另一张纸中。我不是每次都复制整张表,而是用下面的代码拉两张表的增量: 问题是,我还将过滤器应用于接收工作表,并且每当我插入任何新数据时,过滤器范围都不会更新。 有什么办法可以让我绕过这件事吗?作为上面更新函数的一部分,我能否以编程方式更新过滤器范围?

  • 我一直在努力对我的数据进行自动排序(根据第二行第一列数据进行升序),我通过在线搜索找到了一些提示,但遇到了一个错误,似乎我无法通过网络找到答案。 下面是一个场景: 我有两张床单,一张 这是床单 这是第二张 请注意,两张表中的列lastname和code相同,不同之处在于列的性别(在下拉列表中格式化) 我发现一个脚本似乎可以工作,但我不能完全正常工作,下面是我运行脚本后的输出。 注意红色框中的列,似

  • 在继续使用GoogleApps脚本构建Google电子表格的过程中,我已经完成了获取Bittrex和Poloniex余额的工作,但无法使用Cryptopia。 下面是我与Bittrex将JSON对象数组映射到字符串的斗争的链接 以下是官方API链接:https://www.cryptopia.co.nz/Forum/Thread/256 以下是一些例子: https://www.cryptopia

  • 在谷歌工作表上,尝试根据特定单元格中的值隐藏/取消隐藏行,并尝试在AppsScript中为此编写脚本。发现一个隔离工作(如果B55=NO,则隐藏64行): 但我需要对多个单元格和多行使用相同的方法,只要我展开它,就只有代码的最后一部分有效,而不是第一部分: 从这里开始,B121号牢房开始工作,但我的B55停止工作。有什么提示吗?谢谢!

  • 我已经为GoogleSheets编写了一个GoogleApps脚本,但它需要运行不同的代码,这取决于它是在“新”工作表上运行,还是在“旧工作表”格式的工作表上运行。 它是在“旧工作表”上编写的,但我希望在Google将所有工作表更新为“新工作表”格式时保持兼容性。(这特别适用于向用户显示警报框:https://developers.google.com/apps-script/guides/dia

  • 在下面的注释中,已解析设置薪等的代码。我们只需要看看如何返回等级就可以了。