在js中获取google api中多个工作表的所有数据

Ala*_*med 3 javascript google-sheets google-sheets-api

我正在尝试使用 javascript 从 google 工作表获取一些数据。我的工作表中有多个工作表。我成功获取单个工作表的所有数据。但我需要从所有工作表中获取所有数据。这是我的单个工作表的代码。

$.ajax({
    type: 'get',
    url: 'https://sheets.googleapis.com/v4/spreadsheets/{sheet_id}/values/sheet1?key={API_KEY}',
    async: false,
    success: function(response) {

    }
});
Run Code Online (Sandbox Code Playgroud)

谁能帮我获取所有工作表的所有数据?

Tan*_*ike 7

我认为在您目前的情况下,您正在使用Sheets API的spreadsheets.values.get方法。例如,当您想要检索所有工作表中的所有值时,以下两种模式怎么样?

模式一:

在此模式中,它使用Sheets API的spreadsheets.get方法。在这种情况下,所有值都可以通过以下端点检索。

端点:
https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###?fields=sheets%2Fdata%2FrowData%2Fvalues%2FuserEnteredValue&key={YOUR_API_KEY}
Run Code Online (Sandbox Code Playgroud)
  • 字段sheets/data/rowData/values/userEnteredValue用于检索值。

模式2:

在此模式中,它使用Sheets API的spreadsheets.values.batchGet方法。在这种情况下,您需要知道每个工作表名称,因为此方法中使用工作表名称。

端点:
https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###/values:batchGet?ranges=Sheet1&ranges=Sheet2&key={YOUR_API_KEY}
Run Code Online (Sandbox Code Playgroud)
  • 作为查询参数,请设置为ranges=Sheet1&ranges=Sheet2&...

笔记:

  • 在您的脚本中,您使用 API 密钥。在这种情况下,需要公开共享电子表格。

参考:

如果我误解了你的问题,我深表歉意。

编辑:

  • 您选择了模式 2。
  • 您希望通过检索电子表格中的所有工作表名称来创建查询参数。

如果我的理解是正确的,那么如何使用 Sheets API 的 Spreadsheets.get 方法检索工作表名称。端点是

https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###?fields=sheets%2Fproperties%2Ftitle&key={YOUR_API_KEY}
Run Code Online (Sandbox Code Playgroud)

在本例中,sheets/properties/title用作fields。这样,就可以检索到所有的工作表名称。当这反映到你的脚本中时,这个修改怎么样?我认为这是一个简单的修改。所以请根据您的情况进行修改。我认为针对您的情况有几种解决方案。所以请将此视为其中之一。

修改后的脚本:

$.ajax({
  type: 'get',
  url: 'https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###?fields=sheets%2Fproperties%2Ftitle&key={API_KEY}',
  async: false,
  success: function(response) {
    const queryParams = response.sheets.reduce((s, e, i) => s += "ranges=" + e.properties.title + (i < response.sheets.length - 1? "&" : ""), "");
    $.ajax({
      type: 'get',
      url: 'https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###/values:batchGet?key={API_KEY}&' + queryParams,
      async: false,
      success: function(r) {
        console.log(r)
      }
    });
  }
});
Run Code Online (Sandbox Code Playgroud)