使用 sheet id 而不是 sheet 标题查找 Google 表格值(Google Drive Rest API V4)

Looking up Google Sheets values using sheet id instead of sheet title (Google Drive Rest API V4)

使用 Google Sheets REST API V4,并且更愿意使用 sheet id 而不是 sheet 标题来查找单元格中的值。似乎您可以使用范围在 spreadsheet 中指定 sheet,例如Sheet4!A1:Z500,但不是 sheet ID,例如 1310487470!A1:Z500。这样,如果有人重命名 sheet,查询就不必更改。 Google API支持ID查询吗?

当前查询:

https://sheets.googleapis.com/v4/spreadsheets/1SR0DJ4nV5-05EWxjz1OYOWkKFObClmsC0rOowPnMwNE/values/Sheet4!A1:Z500

理想查询:

https://sheets.googleapis.com/v4/spreadsheets/1SR0DJ4nV5-05EWxjz1OYOWkKFObClmsC0rOowPnMwNE/values/1310487470!A1:Z500

下面的示例怎么样?我准备了它作为气体样品。如果您使用它,请在 API 控制台启用 Sheet API v4。

这会使用 GID 在 spreadsheet 中检索 sheet 的数据。

  1. 检索 spreadsheet 中 sheets 的信息。创建了一个 JSON 数据,其中包含键 GID 和值 sheet 名称。

  2. 使用 JSON 从 sheet 检索数据。

示例脚本:

function fetch(url){
  return UrlFetchApp.fetch(url, {
    headers: {
      'Authorization': 'Bearer ' +  ScriptApp.getOAuthToken()
    }
  });
}

function main(){
  // Retrieves information of sheets in spreadsheet. 
  var spreadsheet = "#####";
  var url = "https://sheets.googleapis.com/v4/spreadsheets/" + spreadsheet + "?fields=sheets(properties(sheetId%2Ctitle))";
  var sheetdic = {};
  JSON.parse(fetch(url)).sheets.forEach(function(e){
    sheetdic[e.properties.sheetId] = e.properties.title;
  });

  // Retrieves data from sheet using GID.
  var sheet = sheetdic["#####"]; // Imports sheet name using GID.
  var url = "https://sheets.googleapis.com/v4/spreadsheets/" + spreadsheet + "/values/" + sheet + "!A1:Z500";
  var results = fetch(url);
}