如何获取 Sheet 的数据范围

How to get a data range of the Sheet

我需要获取 Sheet 的数据范围。我必须调用 API 两次。

GET https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/Sheet1?majorDimension=ROWS
// Height is result.length

GET https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/Sheet1?majorDimension=COLUMNS
// Width is result.length

但是我不需要数据,我只需要数据范围的大小。有办法得到吗?

很遗憾,我找不到使用 Sheets API 直接检索 "the size of the data range" 的方法。因此,作为一种解决方法,我想建议使用 Web 应用程序。在您的情况下,您似乎已经拥有访问令牌。因此,此提案使用访问令牌访问 Web 应用程序。本提案流程如下

1。复制并粘贴此示例脚本

function doGet(e) {
  var id = e.parameter.id;
  var sheetName = e.parameter.sheetname;
  var result = {};
  try {
    var ss = SpreadsheetApp.openById(id).getSheetByName(sheetName);
    result.LastRow = ss.getLastRow();
    result.LastColumn = ss.getLastColumn();
  } catch(er) {
    result.Error = er;
  }
  return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
}

复制粘贴后请直接运行doGet()。这样,授权就可以完成了。请忽略脚本错误。

2。部署 Web 应用程序:

部署Web Apps的条件如下。

  • doGet() 项目的脚本编辑器上。
    • 发布 -> 部署为网络应用程序
    • 对于"Execute the app as:",设置"Me".
    • 对于"Who has access to the app:",设置"Only myself".
    • 单击“部署”。
    • Web 应用程序的副本 URL。

在上述情况下,只有使用访问令牌才能访问Web Apps。不使用access token时,报Unauthorizedreturns的错误。 在这种情况下,请将 https://www.googleapis.com/auth/drive 加入范围。

3。卷曲样本:

这是卷曲示例。使用它,您可以检索 spreadsheet 的 LastRow 和 LastColumn。 当您使用它时,请将 URL 替换为您的 Web 应用程序的 URL,并输入 spreadsheet ID 和 sheet 名称。

curl -GL \
  -H "Authorization: Bearer ### your access token ###" \
  -d "id=### spreadsheet ID ###" \
  -d "sheetname=### sheet name ###" \
  "https://script.google.com/macros/s/#####/exec"
样本结果:
{"LastRow":10,"LastColumn":10}

如果这对您没有用,我很抱歉。