2016-07-05 83 views
1

我刚开始尝试使用Google表格的脚本编辑器。查找特定“标题”行后面的下一行空行

这里就是我想要做: 我在表A的几个 “头” 我将它们命名首部A,B和C.

1 | Header A 
2 | text 1 
3 | text 2 
4 | (empty row) 
5 | Header B 
6 | text 1 
7 | text 2 
8 | (empty row) 
9 | Header C 
10 | text 1 
11 | text 2 

片B

1 | text 1 | date | Header A 
2 | text 2 | date | Header B 
3 | text 3 | date | Header B 
4 | text 4 | date | Header C 
5 | text 5 | date | Header A 

当我在工作表B上更新我的数据时,它将根据工作表B中的自定义属性自动更新到工作表A上。我需要它能够将工作表B上的数据更新到工作表A的空行之后特定的头文件。

目前我被困在获得表A中的下一个空行。我能够得到我的标题所在的行,但我找不到任何帮助在线查找每个特定标题后的下一个空行。

我找不到任何提供的类。我只能看到getLastRow,这不是我想要的。我想知道这可以做到吗?

下面是我当前的代码:

function getScheduleStatus(){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var name = ss.getSheetByName("Production Schedule"); 
    var rng = name.getDataRange(); 
    var last_row = rng.getLastRow(); 
    var data = rng.getValues(); 
    var str_upcoming = "upcoming" 
    var rows = []; 

    for (var i=0; i < data.length; i++) { 
     if (data[i][0].toLowerCase() == str_upcoming) { 
      Logger.log("true"); 
      rows.push(i); 
     } 
     } 
    var row = Number(rows)+Number(rng.getRow()); 
    Logger.log(row); 


} 

目前我能找到头,以及获得的行号。

希望你们能理解。

回答

2

看看Faster way to find the first empty row;那里的答案可以适应你的情况。

最快的解决方案是Don Kirby's,而且由于您只有一列数据,所以它非常理想。我们只需要将其更改为从特定的headerRow开始搜索!

/** 
* Search column A starting at the given row, to find 
* the first following empty row. Uses spreadsheet row numbers. 
* From: https://stackoverflow.com/a/38194740/1677912 
* 
* @param {Number} headerRow Row number to start search at. 
* 
* @returns {Number}   Target empty row. 
*/ 
function getFirstEmptyRowAfter(headerRow) { 
    var spr = SpreadsheetApp.getActiveSpreadsheet(); 
    var column = spr.getRange('A:A'); 
    var values = column.getValues(); // get all data in one call 
    var ct = headerRow; // Start at row after headerRow (0-adjusted) 
    while (values[ct][0] != "") { 
    ct++; 
    } 
    return (ct + 1); // (1-adjusted) 
} 
+0

感谢您的帮助!我确实看到了答案,但是当我尝试时,它不起作用。将看看如何优化速度。 – Dr3am3rz

相关问题