Google Sheets API-自动获取最大范围的工作表

时间:2019-03-17 09:24:42

标签: node.js google-sheets google-sheets-api google-api-nodejs-client

众所周知,为了从Google Sheets API中的行列中获取值,格式如下:

gapi.client.sheets.spreadsheets.values.get({
  spreadsheetId: id,
  range: "myData!A1:E" 
}).then(res => {
  console.log(res.result);
}, err => console.log(err));

请注意,“范围”必须在特定参数之内,但是如何简单地获得最大范围内的值?是否有类似“ myData!Min:Max”的简写形式?我知道您可以提出另一个请求以获取最大行和列长度:

sheets.spreadsheets.get({
    spreadsheetId: id,
    ranges: [],
    auth: something
}, (err, resp) => {
    var sheetOne = resp.data.sheets[0];
    console.log(sheetOne.properties.gridProperties); // { rowCount: 1024, columnCount: 7 } (for example)
})

,然后一旦有了,我就可以从理论上自动使用数字到字母的交换系统自动生成范围字符串,以获取列字母名称或类似名称,并再次请求获取最大列,但首先全部:

  1. 制作一个仅从数字最大值返回字母格式范围的函数可能会很复杂
  2. 即使如此,我也只想获取其中包含非空值的范围;如果我有一个1000行的电子表格,但仅使用前20行和列,那么我想将范围自动限制为实际值。

使用API​​执行此操作的任何方法?

1 个答案:

答案 0 :(得分:1)

要返回名为myData的工作表中的所有单元格,可以使用myData而不是myData!A1:E

gapi.client.sheets.spreadsheets.values.get({
    spreadsheetId: id,
    range: "myData" 
}).then(res => {
    console.log(res.result);
}, err => console.log(err));

关于您的第二个问题,据我所知,无法使用A1表示法仅获取其中包含非空值的范围。

但是,一旦api返回了值,就可以遍历这些值以确定哪些值。

来自https://developers.google.com/sheets/api/guides/concepts

A1表示法

某些API方法需要A1表示法的范围。这是一个类似于Sheet1!A1:B2的字符串,它表示电子表格中的一组单元格,通常在公式中使用。例如,有效范围是:

  • Sheet1!A1:B2 是指Sheet1顶部两行中的前两个单元格。
  • Sheet1!A:A 指Sheet1第一列中的所有单元格。
  • Sheet1!1:2 指的是前两行中的所有单元格 Sheet1。
  • Sheet1!A5:A 是指工作表1第一列的所有单元格 从第5行开始。
  • A1:B2 是指前两个单元格中的前两个单元格 第一个可见工作表的行。
  • Sheet1 是指其中的所有单元格 Sheet1。