我试图在google工作表中的特定列中找到一个空单元格。我熟悉getLastRow(),但它返回整个工作表中的最后一行。我想获取特定列中的第一个空单元格。所以,我使用了for循环,如果。但我不知道它为什么不起作用。问题是for循环不返回任何东西。 我在表单测试(第2行)中得到10行H列(位置8)。前5行已经有内容。稍后将使用其他代码将数据添加到此单元格中。所以,我希望能够找到此列中的第一个空单元格,以便能够放入新数据。
var sheettest = SpreadsheetApp.getActive().getSheetByName("test");
var columntest = sheettest.getRange(4, 8, 10).getValues();
for(var i=0; columntest[i]=="" ; i++){
if (columntest[i] ==""){
var notationofemptycell = sheettest.getRange(i,8).getA1Notation();
return notationofemptycell
}
}
正如我所说,我想找到该列中的第一个空单元格。只要单元格不为空,我就定义了for循环。然后,如果单元格为空,则应返回该单元格的A1表示法。 似乎for循环一直持续到找到空单元格为止,因为我没有定义var" notationofemptycell"在调试中。
答案 0 :(得分:1)
这可能更快:
function getFirstEmptyCellIn_A_Column() {
var rng,sh,values,x;
/* Ive tested the code for speed using many different ways to do this and using array.some
is the fastest way - when array.some finds the first true statement it stops iterating -
*/
sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('test');
rng = sh.getRange('A:A');//This is the fastest - Its faster than getting the last row and
//getting a specific range that goes only to the last row
values = rng.getValues(); // get all the data in the column - This is a 2D array
x = 0;
values.some(function(ca,i){
//Logger.log(i)
//Logger.log(ca[0])
x = i;//Set the value every time - its faster than first testing for a reason to set the value
return ca[0] == "";//The first time that this is true it stops looping
});
Logger.log('x: ' + x)//x is the index of the value in the array - which is one less than
//the row number
return x + 1;
}
答案 1 :(得分:0)
您需要遍历columntest的长度。试试这个:
function myFunction() {
var sheettest = SpreadsheetApp.getActive().getSheetByName("test");
var lr=sheettest.getLastRow()
var columntest = sheettest.getRange(4, 8, lr).getValues();
for(var i=0; i<columntest.length ; i++){
if (columntest[i] ==""){
var notationofemptycell = sheettest.getActiveCell().getA1Notation();
Logger.log( notationofemptycell)
break;//stop when first blank cell on column H os found.
}
}
}