【问题标题】:get all data of multiple worksheet in google api in js在js中获取google api中多个工作表的所有数据
【发布时间】:2019-03-06 08:32:08
【问题描述】:

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

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

    }
});

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

【问题讨论】:

    标签: javascript google-sheets google-sheets-api


    【解决方案1】:

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

    模式一:

    在此模式中,它使用 Sheets API 的电子表格.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 的电子表格.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 的电子表格.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)
          }
        });
      }
    });
    

    【讨论】:

    • 感谢您的回复。但我不能硬编码范围。它的动态。
    • @Alauddin Ahmed 感谢您的回复。我带来的不便表示歉意。我无法理解i just can't hard-code ranges. Its dynamic.?我能问一下你目前的问题吗?我想解决你的问题。但是我很抱歉我的英语水平不好。
    • 我的意思是,我不能像这样硬编码 range=sheet1&ranges=sheet2.. 这些工作表名称可能会改变。
    • @Alauddin Ahmed 感谢您的回复。我为我不完整的答案道歉。我可以理解您当前的问题。我更新了我的答案。你能确认一下吗?
    • 对不起,没有检查答案..您之前的回答给了我需要的提示。我和你现在的回答完全一样。
    猜你喜欢
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多