2017-08-08 108 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()。更新代碼以獲取工作表中的所有列。

相關問題