如何获取Sheet的数据范围

时间:2018-02-21 23:31:50

标签: google-spreadsheet-api

我需要获取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

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

1 个答案:

答案 0 :(得分:1)

不幸的是,我找不到使用Sheets API直接检索“数据范围大小”的方法。因此,作为一种解决方法,我建议使用Web Apps。在您的情况下,您似乎已经拥有访问令牌。因此,此提案使用访问令牌访问Web Apps。该提案的流程如下:

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()在项目的脚本编辑器上。
    • 发布 - >部署为Web应用程序
    • 对于“执行应用为:”,请设置“我”
    • 对于“谁有权访问该应用:”,请设置“仅限我自己”
    • 单击“部署”。
    • 复制Web Apps的URL。

在上述情况下,只有在使用访问令牌时才能访问Web Apps。未使用访问令牌时,Unauthorized的错误将返回。 在这种情况下,请在示波器中加入https://www.googleapis.com/auth/drive

3。卷曲样本:

这是卷曲样本。使用此功能,您可以检索电子表格的LastRow和LastColumn。 使用此功能时,请将URL替换为Web Apps的URL,并输入电子表格ID和工作表名称。

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}

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