Google应用脚本:连续查找第一个空单元格

时间:2017-08-08 12:22:03

标签: google-apps-script google-sheets

我在构建仪表板时学习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用两个=运算符计算为空。

1 个答案:

答案 0 :(得分:2)

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