【问题标题】:Google app script: find first empty cell in a row谷歌应用脚​​本:连续找到第一个空单元格
【发布时间】:2017-08-08 12:22:02
【问题描述】:

我在构建仪表板的同时学习 Google 应用脚本。我正在从几张纸上收集数据。我的目标是查看每张工作表每周增长多少行。这让我了解我的业务是如何运作的。

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

我拥有的是:

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,那么这也算作空两个=operators。

【问题讨论】:

  • ss.getRange(),当与 4 个参数一起使用时,使用起始行和列,然后是行和列计数,因此您将获得从第一列开始的第二行并仅检索 1000 行细胞。如果你只想要一行,我会为 ss.getLastColumn() 的值创建一个变量,并使用它来代替 1000 以及你调用它的点。如果您正在寻找其他行,那么可能需要一个完整的答案。

标签: google-apps-script google-sheets


【解决方案1】:

试试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()。更新了代码以获取工作表中的所有列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多