2017-09-27 109 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(); 
相关问题