2009-05-29 37 views
5

Có cách nào tốt để lấy ô trống đầu tiên trong một cột từ dịch vụ bảng tính của Google qua Java không?API bảng tính Google - tìm ô trống đầu tiên trong cột?

Tôi biết tôi có thể sử dụng:

public CellFeed CheckColumn(int row, int col) 
    throws IOException, ServiceException { 
    CellQuery query = new CellQuery(cellFeedUrl); 
    query.setMinimumRow(row); 
    query.setMaximumRow(row); 
    query.setMinimumCol(col); 
    query.setMaximumCol(col); 
    query.setReturnEmpty(true); 

    CellFeed feed = service.query(query, CellFeed.class); 
    int cell_loc[]; 

    for (CellEntry entry : feed.getEntries()) { 
     cell_loc=CheckIfEmpty(entry); 
    } 
    return cell_loc; 
} 

Và đi bộ qua các mục, nhưng tôi không muốn tải toàn bộ cột cùng một lúc, đó là chậm đối với người dùng của tôi và nó có vẻ xấu để chỉ Walkthrough toàn bộ cột

Mọi suy nghĩ?

Trả lời

1

đoạn nhỏ này sẽ tạo ra một chức năng trong Google Spreadsheet với Google Apps Script:

function emptySpace(array) { 
    // set counter 
    var counter = 0; 

    // itterate through values 
    for (i in array){ 
    if (array[i].length > 1) { 
     throw ("Only single column of data"); 
    } else { 
     if(array[i][0] != "") { 
     counter++; 
     } else { 
     break; 
     } 
    } 
    } 

    // return value + 1 
    return counter + 1; 
} 

Thêm kịch bản này, thông qua các trình biên tập kịch bản, bảng tính của bạn và chức năng emptySpace có sẵn trên toàn bảng tính, như vậy : =emptySpace(A1:A7).

Xem ví dụ tập Tôi đã tạo: empty space

0

Bạn có thể làm một cái gì đó như thế này sử dụng google appscript biên tập mà mở bằng cách nhấn vào Tools-> kịch bản biên tập:

function myFunction() 
{ 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("YOUR_SHEET_NAME"); //get your active sheet for various operations 
    var data = sheet.getDataRange().getValues(); //whole sheet as 2D array 

    for(var i=0; i<data.length; i++) 
    { 
    if(data[i][YOUR_COLUMN].trim() == "") //trim() is used to remove blank spaces 
    { 
     Logger.log(i+1); //Returns empty first empty cell's row # 
     break; 
    } 
    } 
} 

Hoặc, thay vì kiểm tra các bản ghi từ View-> logs hoặc ctrl + enter, bạn có thể viết giá trị đó trên bảng tính cũng bằng cách sử dụng:

sheet.getRange("S8").setValue(i+1); 
Các vấn đề liên quan