部分 CellFeed 负载

Partial CellFeed load

大家新年快乐

目前,我正在使用以下默认方式访问和加载 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有提供这样的方式吗?

我不知道任何 CellFeed,但您可以创建一个 HTML 提要,从任何电子表格中检索许多 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

查看 API 本身,您可以使用单元格提要或列表提要来完成。
在单元格提要中,查看 https://developers.google.com/google-apps/spreadsheets/#fetching_specific_rows_or_columns
你可以在那里指定要获取的 minimum/maximum row/columns,那里还有一个 java 示例。

获取数据的更有效方法是行提要,因为它在 return:
https://spreadsheets.google.com/feeds/list/[=15= 中发送较少的字节] 使用未记录的“start-index”参数,因此它仅从该行开始读取。
我使用它并为 "old" 和 "new" 工作表工作。
第一次您需要获取所有行(或尝试某种二进制查找以查找电子表格的最后一行)。
我没有使用 java api 库,它可能不允许使用未记录的参数。您始终可以直接从 java 或任何语言执行 url "get",并通过 https 直接使用电子表格 api。
我很久以前从这里得到这个提示:
https://groups.google.com/forum/#!topic/google-spreadsheets-api/dSniiF18xnM
并将其用于此 github 项目(java脚本 ajax 调用示例)
https://github.com/zmandel/Plus-for-Trello/blob/master/source/sql.js