簡體   English   中英

如何在最后一行之后插入值?

[英]How to insert row after the last row with value?

我正在使用新的Google表格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表示法中有一些技巧嗎?

我需要與Google Apps腳本等效的.getLastRow

如果您使用追加功能並將范圍設置為整個工作表,API將找到最后一行並在其后附加新數據。

這個網頁解釋了它。

https://developers.google.com/sheets/api/guides/values#appending_values

以下是一些示例代碼:

String range="Sheet1";
insertData.setValues(rows);
AppendValuesResponse response=service.spreadsheets().values()
.append(spreadsheetId,range,insertData).setValueInputOption("USER_ENTERED")
            .execute();

請注意,響應將告訴您插入的位置。

您可以使用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。

v4 API無法詢問“數據的最后一行是什么”,因為它是一種與Apps Script API不同的API樣式。 您可以通過請求數據並計算從第一個請求的行到最后一個返回的行的偏移​​量來自己推斷最后一行。

實際上有一種方法可以詢問API。 我在我的node.js客戶端上使用它(非常確定它非常相似)

    var sheets = google.sheets('v4');
  sheets.spreadsheets.get({
    auth: auth,
    spreadsheetId: 'spreadsheet_id',
    includeGridData: true
  }, function (err, response) {
    if (err) {
      console.log('The API returned an error: ' + err);
    } else {

      var last_row = response.sheets[0].data[0].rowData.length;

    }
  });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM