答えて

9

範囲を「A2:D」に設定すると、シートの最後のデータ行までフェッチされます。

+0

はい、ありがとう! – seba123neo

0

あなたはそうする必要はありません。すべての行がその中に配置されることを保証するために、巨大な範囲(たとえば、A2:D5000)を設定します。それ以上のインパクトがあるかどうかは分かりませんが、メモリ消費量が増えているかもしれませんが、今は問題ありません。

private List<String> getDataFromApi() throws IOException { 
     String spreadsheetId = "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"; 
     String range = "A2:D5000"; 
     List<String> results = new ArrayList<String>(); 
     ValueRange response = this.mService.spreadsheets().values() 
       .get(spreadsheetId, range) 
       .execute(); 
     List<List<Object>> values = response.getValues(); 
     if (values != null) { 
      results.add("Name, Major"); 
      for (List row : values) { 
       results.add(row.get(0) + ", " + row.get(3)); 
      } 
     } 
     return results; 
    } 

ループfor (List row : values)を見てください。テーブルに2つの行がある場合は、valuesリストに2つの要素が表示されます。

+0

A、B、C、Dの最後の値を見つけるのに "A2:D"を指定するだけで、大きな制限を設定する必要はありません。 –

+0

そうですよ!ありがとう!私は十分な経験がありませんでした:) – yurart

0

現在のスプレッドシートの合計行数をカウントすることでそれを得ることができました。 次に、次の行にデータを追加します。

rowcount = this.mService.spreadsheets().values().get(spreadsheetId, range).execute().getValues().size() 
関連する問題