gpt4 book ai didi

google-api - 通过电子表格 API 更新包含大量数据的 Google 电子表格的最快方法是什么?

转载 作者:行者123 更新时间:2023-12-02 17:40:06 25 4
gpt4 key购买 nike

我正在使用 Google Spreadsheet API 更新包含大量数据(数百行和大约二十列)的电子表格。

我已经测试过进行批量调用来更新 2500 个单元格。该调用大约需要 40 秒才能完成,请求约为 1mb,响应约为 2mb。

有什么办法可以让它更快地工作吗?

最佳答案

我能够加速官方 API 中提供的批量请求 http://code.google.com/apis/spreadsheets/data/3.0/developers_guide.html#SendingBatchRequests通过在 UPDATE 之前跳过 QUERY 部分。这就是他们在示例中的内容:

// Prepare the update
// getCellEntryMap is what makes the update fast.
Map cellEntries = getCellEntryMap(ssSvc, cellFeedUrl, cellAddrs);

CellFeed batchRequest = new CellFeed();
for (CellAddress cellAddr : cellAddrs) {
URL entryUrl = new URL(cellFeedUrl.toString() + "/" + cellAddr.idString);
CellEntry batchEntry = new CellEntry(cellEntries.get(cellAddr.idString));
batchEntry.changeInputValueLocal(cellAddr.idString);
BatchUtils.setBatchId(batchEntry, cellAddr.idString);
BatchUtils.setBatchOperationType(batchEntry, BatchOperationType.UPDATE);
batchRequest.getEntries().add(batchEntry);
}
// Submit the update
Link batchLink = cellFeed.getLink(Link.Rel.FEED_BATCH, Link.Type.ATOM);
CellFeed batchResponse = ssSvc.batch(new URL(batchLink.getHref()), batchRequest);

这就是我将其更改为

CellFeed batchRequest = new CellFeed();
for (CellInfo cellAddr : cellsInfo) {
CellEntry batchEntry = new CellEntry(cellAddr.row, cellAddr.col, cellAddr.idString);
batchEntry.setId(String.format("%s/%s", worksheet.getCellFeedUrl().toString(), cellAddr.idString));
BatchUtils.setBatchId(batchEntry, cellAddr.idString);
BatchUtils.setBatchOperationType(batchEntry, BatchOperationType.UPDATE);
batchRequest.getEntries().add(batchEntry);



}

CellFeed cellFeed = ssSvc.getFeed(worksheet.getCellFeedUrl(), CellFeed.class);
Link batchLink = cellFeed.getLink(Link.Rel.FEED_BATCH, Link.Type.ATOM);

ssSvc.setHeader("If-Match", "*");
CellFeed batchResponse = ssSvc.batch(new URL(batchLink.getHref()), batchRequest);
ssSvc.setHeader("If-Match", null);

请注意,应更改 header 才能使其正常工作。

关于google-api - 通过电子表格 API 更新包含大量数据的 Google 电子表格的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8402733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com