9

新しい Google Sheets API v4 を使用してスプレッドシートにデータを挿入しています。コードは完璧に機能し、データはシートに適切に挿入されます。

しかし、データを含む最後の行を見つけて、この後にデータを追加するにはどうすればよいですか?

List<List<Object>> arrData = getData();

ValueRange oRange = new ValueRange();
oRange.setRange("Pedidos!AXXXXXXX"); // I NEED THE NUMBER OF THE LAST ROW
oRange.setValues(arrData);

List<ValueRange> oList = new ArrayList<>();
oList.add(oRange);

BatchUpdateValuesRequest oRequest = new BatchUpdateValuesRequest();
oRequest.setValueInputOption("RAW");
oRequest.setData(oList);

BatchUpdateValuesResponse oResp1 = mService.spreadsheets().values().batchUpdate("ID_SPREADSHEET", oRequest).execute();

このための A1 表記にトリックはありますか?

.getLastRowGoogle Apps Scriptと同等のものが必要です。

4

4 に答える 4

2

AppendCellsRequest を使用して行を追加できます。以下の方法でうまくいくはずです。アプリケーション固有であるため、getRowDataListForCellStrings メソッドは含めていません。

まず、AppendCellsRequest を含む Request オブジェクトを作成します。

public BatchUpdateSpreadsheetResponse appendWorksheet(String cellValues) throws SpreadsheetException {
    AppendCellsRequest appendRequest = new AppendCellsRequest();
    appendRequest.setSheetId( mSheet.getProperties().getSheetId() );
    appendRequest.setRows( getRowDataListForCellStrings(cellValues) );
    appendRequest.setFields("userEnteredValue");

    Request req = new Request();
    req.setAppendCells( appendRequest );

    return executeBatchRequest(req);
}

次に、spreadsheets() インターフェイスで batchUpdate を呼び出します。

BatchUpdateSpreadsheetResponse executeBatchRequest(Request request) throws SpreadsheetException {
    List<Request> requests = new ArrayList<>();
    requests.add( request );

    BatchUpdateSpreadsheetRequest batchRequest = new BatchUpdateSpreadsheetRequest();
    batchRequest.setRequests( requests );

    try {
          return  mService.spreadsheets().batchUpdate(mSpreadsheet.getSpreadsheetId(), batchRequest).execute();
    } catch (IOException e) {
        throw new SpreadsheetException(e);
    }
}

残念ながら、どの行が更新されたかを知る方法はないようです。このように追加するときに valueInputOption を設定することはできないようです。

于 2016-06-03T16:20:53.603 に答える