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

时间:2019-03-06 08:32:08

标签: 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) {

    }
});

有人可以帮助我获取所有工作表的所有数据吗?

1 个答案:

答案 0 :(得分:1)

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

模式1:

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

终点:
https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###?fields=sheets%2Fdata%2FrowData%2Fvalues%2FuserEnteredValue&key={YOUR_API_KEY}
  • sheets/data/rowData/values/userEnteredValue的字段用于检索值。

模式2:

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

终点:
https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###/values:batchGet?ranges=Sheet1&ranges=Sheet2&key={YOUR_API_KEY}
  • 作为查询参数,请将其设置为ranges=Sheet1&ranges=Sheet2&...

注意:

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

参考文献:

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

编辑:

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

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

https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###?fields=sheets%2Fproperties%2Ftitle&key={YOUR_API_KEY}

在这种情况下,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)
      }
    });
  }
});