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

Google应用程序脚本:查找一行中的第一个空单元格

司空高义
2023-03-14

我正在学习谷歌应用程序脚本,同时构建仪表板。我正在从几张纸上收集数据。我的目标是看每一张纸每周增长多少行。这让我了解了我的业务情况。

我可以获取我要检查的所有工作表的长度,但是我找不到任何代码来帮助我找到特定行中的第一个空单元格。我想将每个工作表的长度放在那里(在我的仪表板数据收集表中)以稍后创建图表。

我所拥有的是:

var range = ss.getRange(2, 1, 1, 1000);
var waarden = range.getValues();
Logger.log(waarden);
var counter = 0
for (var j = 0; j < ss.getLastColumn(); j++) {
    Logger.log(waarden[0][j]);
    if (waarden[0][j] == ""){
        break
    } else {
        counter++;
    }
    Logger.log(counter);
}

这是可行的,但我无法想象这是最好的解决方案(或最快的解决方案)。如果我的长度超过1000而我没有注意到它,有什么建议吗(虽然在这种情况下需要几年的时间;)?!为什么getLastColumn()的行为与getLastRow()的行为如此不同?

感谢您帮助我学习:)

***编辑我想出我必须使用if(waarden[0][j] === ""){有三个=,否则如果我用作检查的行中的工作表的长度0比这也被算作两个=运算符为空。

共有1个答案

韩佐
2023-03-14

尝试indexOf()

function firstEmptyCell () {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];

  var range = ss.getRange(2, 1, 1, ss.getMaxColumns());
  var waarden = range.getValues();

  // Get the index of the first empty cell from the waarden array of values
  var empty_cell = waarden[0].indexOf("");

  Logger.log("The index of the first empty cell is: %s", empty_cell);
}

这将为您提供从0索引开始的空单元格的列位置。因此,如果返回的索引为4,则列为“E”。

编辑:关于getLastColumn()问题;您可以使用getMaxColumns()来代替。更新代码以获取工作表中的所有列。

 类似资料:
  • 我有一个谷歌脚本,它将根据谷歌工作表中的数据创建一个谷歌表单。但是,代码没有正确检测每行中的最后一个空单元格。相反,它写入行中的每个单元格,即使它是空的。所以表格上总是有15个选项的问题,因为这是表格的范围。下面是一个错误表单的示例。此处是指向该工作表的可编辑版本的链接。非常感谢。

  • 我试图在谷歌表单的特定列中找到一个空单元格。我熟悉getLastRow(),但它返回整个工作表中的最后一行。我想获取特定列中的第一个空单元格。所以,我使用了for循环和if循环。但我不知道为什么它不起作用。问题是for循环不返回任何内容。我得到了表单测试(第2行)中H列(位置8)的10行。前5行已包含内容。稍后将使用其他代码将数据添加到此单元格。因此,我希望能够在这个列中找到第一个空单元格,以便能

  • 使用谷歌表格应用程序脚本,是否有可能得到X单元格的单元格范围如下所示: 我不想更改每个单元格的颜色,只想更改那些具有正确条件的单元格。 我知道这样做是可能的: 但是这种方法需要很长时间才能完成for循环,因为有数百个单元需要扫描。我宁愿只对整个范围使用一次getRange(而不是一次只使用一个单元格),然后从该范围使用getRange(它应该生成一个2d数组,对吗?)设置单元格值。我想那会快得多。

  • 我拼凑了一个谷歌脚本脚本,用于谷歌表格,旨在找到某些行并移动它们。 当某一列中的复选框被标记时,我将从该行获取一系列单元格,然后将它们移动到另一列。我希望他们转到该列的最后一个空行。或者,如果方便的话,他们可以去第一个空行。 我已经有了这个功能,但是我担心一旦我的工作表达到一百或几百行,这个功能会运行得非常慢。 有人能帮我以更优化/高效的方式编写这段代码吗? 编辑:我需要特定列子集的最后一行,而不

  • 问题内容: 查找整数数组中的第一个重复元素。 例如: 问题答案: 简单的解决方案是使用两个循环。外循环将遍历循环,内循环将检查元素是否重复,但此解决方案的时间复杂度为 o(n^2)。 另一种解决方案是创建另一个数组并对其进行排序。从原始数组中选取元素并使用二进制搜索在排序数组中查找元素,但此解决方案的时间复杂度为 o(n^logn)。 我们能做得更好吗? 是的,我们可以从右到左迭代并使用HashS

  • 所以我有主python脚本,我想从我的主文件中调用另一个python脚本,但是,每当我这样做的时候,我调用的脚本就会超过原来的脚本控制台中的主脚本?