2017-09-27 10 views
0

私はこれを行うために以下のコードを使用しています。Googleスプレッドシートapiでシートを複製する方法

BatchUpdateSpreadsheetRequest batchUpdateSpreadsheetRequest = new BatchUpdateSpreadsheetRequest(); 

DuplicateSheetRequest requestBody = new DuplicateSheetRequest(); 
requestBody.setNewSheetName("test"); 
requestBody.setSourceSheetId(sheetId); 

Sheets sheetsService = createSheetsService(); 

batchUpdateSpreadsheetRequest.set("duplicateSheet", requestBody); 
Sheets.Spreadsheets.BatchUpdate request = sheetsService.spreadsheets(). 
batchUpdate(spreadsheetId,batchUpdateSpreadsheetRequest); 
BatchUpdateSpreadsheetResponse response = request.execute(); 

これを実行すると、以下のエラーが発生します。

Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request 
{ 
    "code" : 400, 
    "errors" : [ { 
    "domain" : "global", 
    "message" : "Invalid JSON payload received. Unknown name \"duplicate_sheet\": Cannot find field.", 
    "reason" : "badRequest" 
    } ], 
    "message" : "Invalid JSON payload received. Unknown name \"duplicate_sheet\": Cannot find field.", 
    "status" : "INVALID_ARGUMENT" 
} 

私はここで間違っていますか?シートの複製を作成する正しい方法は何ですか?

答えて

1

私はこの問題を、google documentationと同様の方法で解決することができました。以下は、私が使用したコードです。

BatchUpdateSpreadsheetRequest batchUpdateSpreadsheetRequest = new 
BatchUpdateSpreadsheetRequest(); 

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

DuplicateSheetRequest requestBody = new DuplicateSheetRequest(); 
requestBody.setNewSheetName("test"); 
requestBody.setSourceSheetId(sheetId); 

requests.add(new Request().setDuplicateSheet(requestBody)); 

Sheets sheetsService = createSheetsService(); 

batchUpdateSpreadsheetRequest.setRequests(requests); 
Sheets.Spreadsheets.BatchUpdate request = 
      sheetsService.spreadsheets().batchUpdate(spreadsheetId, batchUpdateSpreadsheetRequest); 

BatchUpdateSpreadsheetResponse response = request.execute(); 
関連する問題