2013-12-09 81 views
0

我試圖編碼像電子表格API批量複製https://developers.google.com/google-apps/spreadsheets/#updating_multiple_cells_with_a_batch_request,樣品是在同一個電子表格的基礎上,我添加了一個靶細胞,但總是得到同樣的錯誤如何一個電子表格的單元格複製到其他電子表格

com.google.gdata.client.batch.BatchInterruptedException: Batch Interrupted (some operations might have succeeded) : a response has already been sent for batch operation update id='R1C1' 

我這樣的代碼這

SpreadsheetService spreadsheetService = getSpreadsheetService(currentEmail); 


    WorksheetFeed feed = spreadsheetService.getFeed(getWorksheetFeedURL(sourceId), WorksheetFeed.class); 
    SpreadsheetEntry targetFeed = spreadsheetService.getEntry(getSpreadsheetFeedURL(targetId), SpreadsheetEntry.class); 
    SpreadsheetEntry sourceFeed = spreadsheetService.getEntry(getSpreadsheetFeedURL(sourceId), SpreadsheetEntry.class); 

    for(WorksheetEntry entry:feed.getEntries()){ 
     WorksheetEntry targetWorksheet = spreadsheetService.insert(targetFeed.getWorksheetFeedUrl(), entry); 
     FeedURLFactory urlFactory = FeedURLFactory.getDefault(); 
     URL cellFeedUrl = urlFactory.getCellFeedUrl(sourceFeed.getKey(), "od6", "private", "full"); 
     URL targetFeedUrl = urlFactory.getCellFeedUrl(targetFeed.getKey(), "od6", "private", "full"); 
     CellFeed cellFeed = spreadsheetService.getFeed(targetFeedUrl, CellFeed.class); 
     List<CellAddress> cellAddrs = new ArrayList<CellAddress>(); 
     for (int row = 1; row <= entry.getRowCount(); ++row) { 
      for (int col = 1; col <= entry.getColCount(); ++col) { 
       cellAddrs.add(new CellAddress(row, col)); 
      } 
     } 
     Map<String, CellEntry> cellEntries = getCellEntryMap(spreadsheetService, cellFeedUrl, cellAddrs); 

     CellFeed batchRequest = new CellFeed(); 

     for (CellAddress cellAddr : cellAddrs) { 
      URL entryUrl = new URL(targetFeedUrl.toString() + "/" + cellAddr.idString); 
      CellEntry batchEntry = new CellEntry(cellAddr.row, cellAddr.col, cellAddr.idString); 
      String inputValue = cellEntries.get(cellAddr.idString).getCell().getInputValue(); 
      batchEntry.changeInputValueLocal(inputValue); 
      batchEntry.setId(String.format("%s/%s", targetFeedUrl.toString(), cellAddr.idString)); 
      System.out.println(targetFeedUrl.toString()+": "+cellAddr.idString+" "+ inputValue); 
      BatchUtils.setBatchId(batchEntry, cellAddr.idString); 
      BatchUtils.setBatchOperationType(batchEntry, BatchOperationType.UPDATE); 
      batchRequest.getEntries().add(batchEntry); 
     } 
     spreadsheetService.setHeader("If-Match", "*"); 
     // Submit the update 
     Link batchLink = cellFeed.getLink(ILink.Rel.FEED_BATCH, ILink.Type.ATOM); 
     CellFeed batchResponse = spreadsheetService.batch(new URL(batchLink.getHref()), batchRequest); 

     boolean isSuccess = true; 
     for (CellEntry entry1 : batchResponse.getEntries()) { 
      String batchId = BatchUtils.getBatchId(entry); 
      if (!BatchUtils.isSuccess(entry1)) { 
       isSuccess = false; 
       BatchStatus status = BatchUtils.getBatchStatus(entry); 
      } 
     } 
     spreadsheetService.setHeader("If-Match", null); 

回答

相關問題