2017-08-08 74 views
2

在构建仪表板时,我正在学习Google应用脚本。我从几张表中收集数据。我的目标是看每张纸每周增长多少排。这让我深入了解我的业务在做什么。Google应用脚本:连续查找第一个空单元格

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

我所拥有的是:

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也算作两个=运营商为空。

+0

当与4个参数一起使用时,ss.getRange()使用起始行和列,然后使用行和列计数,以便获取第一行从第一列开始并仅检索1行1000个单元格。如果你只想要一行,我会为ss.getLastColumn()的值创建一个变量,并用它代替1000以及代替你调用它的点。如果您正在寻找额外的行,那么可能需要完整的答案。 –

回答

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

相关问题