新年快乐,伙计们,
目前,我使用以下默认方式访问和加载Google表格工作表:
URL metafeedUrl = new URL(SPREADSHEET_URL);
SpreadsheetEntry spreadsheet = service.getEntry(metafeedUrl, SpreadsheetEntry.class);
URL cellFeedUrl = ((WorksheetEntry) spreadsheet.getWorksheets().get(0)).getCellFeedUrl();
// Get entries as cells
feed = (CellFeed) service.getFeed(cellFeedUrl, CellFeed.class);
然后我一起工作,等等。一切正常。
我即将部署该应用程序,并使其与包含数百个(如果不是数千行)单元格的工作表一起使用。对我来说,唯一相关的行通常是100-200个底行。
有没有办法部分加载CellFeed,最好从下往上? API是否提供了这种方式?
答案 0 :(得分:2)
查看API本身,您可以使用单元格Feed或列表Feed
在单元格Feed中,请查看https://developers.google.com/google-apps/spreadsheets/#fetching_specific_rows_or_columns
你可以在那里指定要获得的最小/最大行/列,并且还有一个java示例。
获取数据的一种更有效的方法是行换页,因为它返回的字节数更少:
https://spreadsheets.google.com/feeds/list/
使用未记录的“start-index”参数,因此它只从该行开始读取
我使用它并适用于“旧”和“新”表
第一次需要获取所有行(或尝试某种二进制查找以查找最后一个电子表格行)
我没有使用java api库,它可能不允许使用那个未记录的参数。您可以随时直接从java或任何语言中获取网址,并通过https直接使用电子表格api
很久以前我从这里得到了这个提示:
https://groups.google.com/forum/#!topic/google-spreadsheets-api/dSniiF18xnM
并在这个github项目中使用它(javascript ajax调用示例)
https://github.com/zmandel/Plus-for-Trello/blob/master/source/sql.js
答案 1 :(得分:0)
我不知道任何CellFeed,但您可以创建一个HTML Feed,从任何电子表格中检索大量ROWS,然后处理该HTML,这对您有用吗?检索信息时的目标是什么? 例如
Code.gs
function doGet() {
return HtmlService.createTemplateFromFile("form").evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE);
}
function getLastLines( numLines, ssId, sheetName ){
var sheet = SpreadsheetApp.openById(ssId).getSheetByName(sheetName);
return JSON.stringify(sheet.getRange(sheet.getLastRow() - numLines, 1, numLines, sheet.getLastColumn()).getValues());
}
form.html中的
<div id="arrayPlace"></div>
<script>
function changeDiv( res ){
document.getElementById("arrayPlace").innerHTML = res;
}
function getUrlParameter(sParam)
{
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++)
{
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == sParam)
{
return sParameterName[1];
}
}
}
var numLines = getUrlParameter("numLines");
var ssId = getUrlParameter("ssId");
var sheetName = getUrlParameter("sheetName");
google.script.run.withSuccessHandler( changeDiv ).getLastLines( numLines, ssId, sheetName );
</script>
该URL将包含其他参数: