2016-12-27 8 views
2

Googleシートapiリクエストを1回のAPI呼び出しで実装したいと考えています。1枚のリクエストでシートを作成してデータを更新する

私はこのコードを実装するために管理:

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) 

は、私はこの問題を解決することができますどのように、どのようにしていますか?

答えて

3

Requestオブジェクトには、1つの値が設定されています。

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

代わりに上記を行うための、次の2つの要求オブジェクトを使用する必要があります:

requests.add(new Request().setAddSheet(...)); 
requests.add(new Request().setUpdateCells(...)); 
あなたは、2つの値を設定します
関連する問題