首页 > 解决方案 > 如何使用 Google AppsScript 获取工作表中的当前单元格数?

问题描述

是否有使用 Google AppsScript 获取工作表中当前单元格数量的工具?通过“单元格数”,我指的是 Google 表格中每张表格的 500 万个单元格数量限制。首先,什么是“细胞数”?

例如,如果isblank()在工作表(即文件)的第一个选项卡上分别给出A1,并且在任何其他单元格(和其他选项卡)上,是否会为工作表生成当前的“单元格数”?B3TRUEFALSErange.getValues().lengthSheet1!A1:B3

我希望避免错误

例外:此操作会将工作簿中的单元格数量增加到超过 5000000 个单元格的限制。

通过每次“单元格数”接近 5000000 时创建一个新工作表(即文件)。

第二部分是如何有效地获得“细胞数”。特别是在没有直接工具的情况下,如何有效地查询“单元格数”,以便查询可以成为每天运行约 100 次的脚本的(小)部分,并且仍然在(免费)个人帐户?(我希望在不妨碍组织域下的其他脚本的情况下运行我的脚本。)

标签: google-apps-scriptgoogle-sheets

解决方案


在评论的提示下,以下实验提供了答案。

在通过 GUI 执行以下操作提示 OP 中的错误的工作表中,

  • 添加任意数量的新列或行,包括在未更改其原始.getMaxRows()和的选项卡上.getMaxColumns(),即。1000 行 x 26 列。(将其称为“参考标签”。)
  • 添加新标签

向当前显示在 GUI 中的任何单元格添加内容不会提示错误。

.getMaxRows()此表中所有选项卡的x总和为.getMaxColumns()4804640。

此外,删除参考选项卡中的列允许通过 GUI 添加 40 行,之后添加第 41 行将提示相同的错误。当然,1 列 1000 行的单元格数与 40 行 25 列的单元格数相同。

因此,“细胞数”似乎是指.getMaxRows()x .getMaxColumns(),最大“细胞数”是 4804640。(从技术上讲,+/- 25 个细胞。)

为了查询当前的“单元格数”,可以先使用getSheet()然后计数.getMaxRows()x .getMaxColumns()。这很快,因为getSheet(), getMaxRows(),getMaxColumns()是内置的并且很快。


推荐阅读