部分CellFeed负载

时间:2015-01-01 21:35:56

标签: google-sheets cells

新年快乐,伙计们,

目前,我使用以下默认方式访问和加载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是否提供了这种方式?

2 个答案:

答案 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将包含其他参数:

https://script.google.com/macros/s/AKfycbwFLN-qqTcXXAVgR-aDa9h61yTa39kVhE2MwX9htRbIm2NN5I4/exec?numLines=5&ssId=1dJlNmtvcsWixEDnUz7GxnyLMZKXHwA-9uopYPUC8I4E&sheetName=Sheet1