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)