2017-09-27 154 views
0

我已經使用下面的代碼來做到這一點。如何複製谷歌電子表格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();