Google sheets 如何复制一个电子表格';s单元格到另一个电子表格
我试着像电子表格API批处理副本那样编码,示例基于相同的电子表格,我添加了一个目标单元格,但总是得到相同的错误Google sheets 如何复制一个电子表格';s单元格到另一个电子表格,google-sheets,google-spreadsheet-api,Google Sheets,Google Spreadsheet Api,我试着像电子表格API批处理副本那样编码,示例基于相同的电子表格,我添加了一个目标单元格,但总是得到相同的错误 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' 我的代码是这样
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);
SpreadsheetService SpreadsheetService=getSpreadsheetService(当前电子邮件);
WorksheetFeed提要=spreadsheetService.getFeed(getWorksheetFeedURL(sourceId),WorksheetFeed.class);
SpreadsheetEntry targetFeed=spreadsheetService.getEntry(getSpreadsheetFeedURL(targetId),SpreadsheetEntry.class);
SpreadsheetEntry sourceFeed=spreadsheetService.getEntry(getSpreadsheetFeedURL(sourceId),SpreadsheetEntry.class);
对于(工作表条目:feed.getEntries()){
WorksheetEntry targetWorksheet=电子表格服务.insert(targetFeed.getWorksheetFeedUrl(),条目);
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 cellAddrs=new ArrayList();
对于(int row=1;row批量复制:
有一个带有单元格引用(如$A5)的Bug。
他们不会写电子表格。虽然A5和$A$5都有效,但只有一个$A的引用会导致问题。我忘记了细节