【问题标题】:Find google sheet id from sheet name using nodejs and Google Sheets API v4使用 nodejs 和 Google Sheets API v4 从工作表名称中查找 google sheet id
【发布时间】:2021-04-02 18:35:25
【问题描述】:

我想使用 nodejs 和 Google Sheets v4 API 从工作表名称中找到一个 google sheet id(如 .../edit#gid="SHEET_ID" 查询参数)。如果我理解正确,以下代码应该可以工作,但响应根本不包含任何“sheetIds”。知道我可能错过了什么吗?

const request = {
    spreadsheetId: GS_ID,
    ranges: [sheetName],
    includeGridData: false
};
let res = await GS.spreadsheets.get(request);

console.log(res.data.properties.sheetId);

我只得到这个数据,所以表格属性似乎丢失了

{ spreadsheetId: '###',
  properties:
   { title: '###',
     locale: 'en_US',
     autoRecalc: 'ON_CHANGE',
     timeZone: 'Asia/Tokyo',
     defaultFormat: {...},
  sheets: [ { properties: [Object] } ],
  spreadsheetUrl: 'https://docs.google.com/spreadsheets/d/###/edit' }

【问题讨论】:

  • 嗨,Jacob,像 res.data.getSheets() 这样的东西会返回一个可以过滤的数组吗?

标签: javascript node.js google-sheets-api


【解决方案1】:

解释:

ranges 参数需要采用 A1 表示法才能从响应中检索工作表信息。要检索工作表信息,请遍历工作表数组并从特定工作表名称获取工作表 ID:

示例:

const rangeName = 'A1:B1';
const sheetName = 'Sheet1';
const GS_ID = <insert spreadsheet ID here>;
const request = {
    spreadsheetId: GS_ID,
    ranges: rangeName,
    includeGridData: false
};
let res = await GS.spreadsheets.get(request);

for (i = 0; i < res.sheets.length; i++) {
  if (res.sheets[i].title === sheetName) {
    console.log(res.sheets[i].sheetId); // get sheet ID here
  }
}

参考资料:

Sheets API | Spreadsheets.get

Object Spreadsheet

Object Sheet

【讨论】:

  • 感谢您的回答和解释,奇怪的是我仍然在响应“床单:[[对象]]”中只得到一个空床单对象
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
相关资源
最近更新 更多