查找特定“标题”行

时间:2016-07-05 02:11:41

标签: google-apps-script google-sheets

我刚刚开始试用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的空行之后特定的标题。

目前我一直在获取Sheet A中的下一个空行。我能够得到我的Headers所在的行但是我找不到任何帮助在线查找每个特定Headers之后的下一个空行。

我找不到提供的任何课程。我只能看到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);


}

目前我能够找到标题以及获取行号。

希望你们能理解。

1 个答案:

答案 0 :(得分: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)
}