我有一个用例,并尝试仅获取已公开发布的 Google 电子表格的前四行并将其显示在网页上。
对于只有几千行的电子表格,没有问题。但对于超过 80K 行的电子表格总是会出现超时异常。
我引用了此链接,因为我发现它与我的担忧类似:
Unable to complete the HTTP request when using SpreadSheet API
并使用了超时和重试超时,但它似乎陷入了无限循环。
我正在使用“ListFeed”。是否有可能因为 ListFeed 加载整个电子表格,应用程序需要更多时间来加载?
是否有任何替代解决方案,因为我只需要提取前 4 - 5 行而不是整个电子表格到我的 Web 应用程序中?
请提出建议和建议。
下面是一段代码:
超时并重试:
ListFeed lf = null; while (timeoutflag != 1) { try { lf = service.getFeed(url, ListFeed.class); timeoutflag = 1; } catch (RuntimeException e) { timeoutinc += 2; service.setConnectTimeout(timeoutinc * 3000); service.setReadTimeout(timeoutinc * 3000); } }
获取行:
for (int k = 0; k < 5; k++) { ListEntry le = lf.getEntries().get(k); CustomElementCollection cec = le.getCustomElements(); for (int j = 0; j < colcount; j++) { resp.getWriter().println("<td>"); resp.getWriter().println(cec.getValue(colname[j])); resp.getWriter().println("</td>"); } }
最佳答案
此问题的解决方案已确定。问题是由于使用了列表提要,在我的代码中,列表提要用于连接到电子表格,并且需要大量时间和内存来将所有电子表格存储在变量中:
lf = service.getFeed(url, ListFeed.class); //Thus there used to be connection sometimes and also memory overflow exceptions in case of larger spreadsheets.
解决方案是使用基于细胞的 Feed。无论电子表格有多大,我只需要获取几行,因此,使用基于单元格的提要,您可以将参数传递给电子表格 URL,并且只能获取特定数量的行和列。
您可以引用enter link description here关于基于列表和单元格的提要的文档。
关于java - 如何在 GAE 中仅获取包含超过 80K 行和超过 7 列的 Google 电子表格的前四行(使用 Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39386294/