用一个请求创建工作表和更新数据

问题描述:

我想用一个API调用实现Google工作表API请求。用一个请求创建工作表和更新数据

我设法实现此代码:

List<Request> requests = new ArrayList<>(); 

     List<CellData> values = new ArrayList<>(); 

     values.add(new CellData() 
      .setUserEnteredValue(new ExtendedValue() 
       .setStringValue("Hello World!"))); 

     requests.add(new Request().setAddSheet(new AddSheetRequest() 
      .setProperties(new SheetProperties() 
       .setTitle("scstc"))) 
      .setUpdateCells(new UpdateCellsRequest() 
       .setStart(new GridCoordinate() 
        .setSheetId(0) 
        .setRowIndex(0) 
        .setColumnIndex(0)) 
       .setRows(Arrays.asList(
        new RowData().setValues(values))) 
       .setFields("userEnteredValue,userEnteredFormat.backgroundColor")) 
     ); 

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

     BatchUpdateSpreadsheetResponse response = service.spreadsheets().batchUpdate(spreadsheetId, body).execute(); 

,但我得到的错误:

400 Bad Request 
{ 
    "code" : 400, 
    "errors" : [ { 
    "domain" : "global", 
    "message" : "Invalid value at 'requests[0]' (oneof), oneof field 'kind' is already set. Cannot set 'updateCells'", 
    "reason" : "badRequest" 
    } ], 
    "message" : "Invalid value at 'requests[0]' (oneof), oneof field 'kind' is already set. Cannot set 'updateCells'", 
    "status" : "INVALID_ARGUMENT" 
} 
    at com.google.sheet.impl.GoogleSheetBasicTest1_____1.hello(GoogleSheetBasicTest1_____1.java:133) 

你如何如何,我可以解决这个问题?

每个Request对象旨在在其中设置一个值。要设置两个值:

requests.add(new Request() 
      .setAddSheet(...) 
      .setUpdateCells(...)); 

而不是做上述情况,您需要使用两个请求对象:

requests.add(new Request().setAddSheet(...)); 
requests.add(new Request().setUpdateCells(...));