2012-06-11 2 views
3

Google 스프레드 시트에 배치 데이터를 삽입하려고합니다. 테스트 용. 스프레드 시트 파일 (F1)에 워크 시트 (W1)를 삽입했습니다. w1에서 모든 데이터를 파일 (F2)의 워크 시트 (W2)로 복사하려고합니다. 도와주세요.자바를 사용하여 Google 스프레드 시트에 일괄 listEntry 삽입

SpreadsheetService service = ServiceFactory.getService(); 
    metafeedUrl = new URL(Constants.SPREADSHEET_URL); 
    /* 
    * Get files first 
    */ 
    SpreadsheetFeed feed = service.getFeed(metafeedUrl, SpreadsheetFeed.class); 
    List<SpreadsheetEntry> myFiles = feed.getEntries(); 
    /* 
    * loop through the files and get your required file 
    */ 
    SpreadsheetEntry originalFile = null; 
    SpreadsheetEntry newFile = null; 
    WorksheetEntry workSheet = null; 

    for(SpreadsheetEntry file : myFiles){ 
     if(file.getTitle().getPlainText().equalsIgnoreCase(originalSpreadSheet)){ 
      originalFile = file; 

      List<WorksheetEntry> worksheets = file.getWorksheets(); 

      for(WorksheetEntry worksheet : worksheets){ 
        if(worksheet.getTitle().getPlainText().equals(worksheetName)){ 
         workSheet = worksheet; 
        } 
      } 
     } 

     if(file.getTitle().getPlainText().equalsIgnoreCase(newSpreadSheet)){ 
      newFile = file; 
     } 


    } 

    if(!(originalFile == null || newFile == null || workSheet == null)){ 

     /* 
     * Insert a new work sheet in new file. 
     */ 
     WorksheetEntry newEntry = service.insert(newFile.getWorksheetFeedUrl(), workSheet); 
     /* 
     * Get all the rows from old work sheet 
     */ 
     URL listFeedUrl = workSheet.getListFeedUrl(); 
     ListQuery query = new ListQuery(listFeedUrl); 
     query.setReverse(false); 
     ListFeed listFeed = service.query(query, ListFeed.class); 
     List<ListEntry> entries = listFeed.getEntries(); 
     /* 
     * Batch update in the new work sheet 
     */ 
     ListFeed batchRequest = new ListFeed(); 
     for(ListEntry entry : entries){ 
      BatchUtils.setBatchId(entry, entry.getId()); 
      BatchUtils.setBatchOperationType(entry, BatchOperationType.UPDATE); 
      batchRequest.getEntries().add(entry); 
      System.err.println("Adding entry " + entry.toString()); 
     } 

     FeedURLFactory urlFactory = FeedURLFactory.getDefault(); 
     URL list_FeedUrl = urlFactory.getListFeedUrl(newFile.getKey(), newEntry.getId(), "private", "full"); 
     System.err.println("URL " + list_FeedUrl); 
     ListFeed list_Feed = service.getFeed(list_FeedUrl, ListFeed.class); 
     // Error at above line 
     Link batchLink = list_Feed.getLink(Link.Rel.FEED_BATCH, Link.Type.ATOM); 
     System.err.println("Link " + batchLink); 

     ListFeed batchResponse = service.batch(new URL(batchLink.getHref()), batchRequest); 

     boolean isSuccess = true; 
     for (ListEntry entry : batchResponse.getEntries()) { 
      String batchId = BatchUtils.getBatchId(entry); 
      if (!BatchUtils.isSuccess(entry)) { 
      isSuccess = false; 
      BatchStatus status = BatchUtils.getBatchStatus(entry); 
      System.out.printf("%s failed (%s) %s", batchId, status.getReason(), status.getContent()); 
      } 
     } 
     System.err.println("ALL OK"); 

}

나는 다음과 같은 예외가 점점 오전 : 여기

내 코드 나쁜 소식을주고

com.google.gdata.util.InvalidEntryException: Bad Request 
Invalid query parameter value for grid-id. 

    at com.google.gdata.client.http.HttpGDataRequest.handleErrorResponse(HttpGDataRequest.java:594) 
    at com.google.gdata.client.http.GoogleGDataRequest.handleErrorResponse(GoogleGDataRequest.java:563) 
    at com.google.gdata.client.http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:552) 
    at com.google.gdata.client.http.HttpGDataRequest.execute(HttpGDataRequest.java:530) 
    at com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest.java:535) 
    at com.google.gdata.client.Service.getFeed(Service.java:1135) 
    at com.google.gdata.client.Service.getFeed(Service.java:998) 
    at com.google.gdata.client.GoogleService.getFeed(GoogleService.java:631) 
    at com.google.gdata.client.Service.getFeed(Service.java:1017) 

답변

2

증오하지만, 배치를 할 수 없습니다 수 입니다 ListFeed을 사용하는 요청은 CellFeed입니다. CellFeed에 대한 일괄 요청 처리 방법은 docs을 참조하십시오.

관련 문제