2016-07-05 2 views
1

Google 스프레드 시트의 스크립트 편집기를 시험해보기 시작했습니다. 을 나는 시트 A의 몇 가지 "헤더"가 나는특정 "헤더"행 다음 빈 행 찾기

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 
헤더 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를 이름을 것 : 여기

는 내가 뭘하려고 오전입니다

시트 B의 데이터를 업데이트하면 시트 B의 사용자 지정 특성을 기반으로 시트 A에서 자동으로 업데이트됩니다. 시트 A의 빈 행 위에 시트 B의 데이터를 업데이트 할 수 있어야합니다. 특정 헤더.

현재 시트 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