2009-05-29 14 views
5

GoogleのスプレッドシートサービスからJava経由で最初の空のセルを取得する方法はありますか?GoogleスプレッドシートAPI - 列の最初の空のセルを見つけますか?

は、私が使用することができます知っている:

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; 
} 

をし、エントリを歩いて、私はむしろ、一度列全体をロードしないだろう、それは私のユーザーのために遅いですし、それが悪いと思われるだけで全体をウォークスルーします列

どのような考えですか?

答えて

1

この小さなスニペットでは、Google AppsスクリプトでGoogleスプレッドシートに関数を作成します:

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; 
} 

は、スプレッドシートに、スクリプトエディタを経由して、このスクリプトを追加し、機能emptySpaceはそうのように、ワークシート全域で利用できます:=emptySpace(A1:A7)empty space

0

あなたは>スクリプトエディタツール - をクリックして開きますappscriptエディタをグーグル使用して、このような何かを行うことができます::、

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; 
    } 
    } 
} 

またはその代わりのチェックログ

私が作成したサンプルファイルを参照してください。 View-> logsまたはctrl + enterからスプレッドシートに値を書き込むこともできます:

sheet.getRange("S8").setValue(i+1); 
関連する問題