首页 > 解决方案 > 如何在 Javascript 中使用 Oauth 授权将 Google Sheets API v3 迁移到 v4 后实现 makeApiCall() 方法

问题描述

Google 已经构建了 Google Sheets API 的 v4,但它的文档仍然是 v3。没有关于如何使用 Google Sheets API v4 实现简单 OAuth 身份验证的完整示例。

我在这里看到了一个迁移指南,我也在这里看到了一个部分示例 但是找不到完整的示例。“当前”版本在这里,最后一次更新是在 2018 年 10 月,没有提供 v4 示例。

假设在我授权用户之后,我正在尝试读取 workbook2 中的特定电子表格,并且我明确指定了我需要的列。然后我使用 Google Visualization API 呈现这些信息。

所以,这就是我在 Google Sheets v3 legacy 中的做法。

function makeApiCall() {
var queryString = encodeURIComponent('SELECT A,B,C,E,H');
   var tqURL = new google.visualization.Query(
        'https://docs.google.com/spreadsheets/d/*yourspreadsheetid*/gviz/tq?gid=*yourworkbookid*&headers=1&tqx=responseHandler:handleTqResponse' + '&access_token=' + encodeURIComponent(gapi.auth.getToken().access_token));
      tqURL.send(handleTqResponse);
}

function handleTqResponse(resp) {
  var dataTable = resp.getDataTable();
}

对于 v4,如果我在此处遵循此部分示例,如何将 tqURL 转换为 GET 方法?以及如何才能将响应(rsp)作为 DataTable()?

    function makeApiCall() {
  var params = {
    spreadsheetId: 'my-spreadsheet-id',  // all clear here
    //what about workbook gid?
    // The ranges to retrieve from the spreadsheet.
    ranges: [],  // [A:A,B:B,C:C,E:E,H:H) ????
    includeGridData: false,
   //no need to include the access_token here?
  };

  var request = gapi.client.sheets.spreadsheets.get(params);
  request.then(function(response) {
  console.log(response.result);
  //var dataTable = responce.getDataTable(); ?? 
  }, function(reason) {
    console.error('error: ' + reason.result.error.message);
  });
}

标签: javascriptgoogle-apps-scriptgoogle-sheetsgoogle-visualizationgoogle-sheets-api

解决方案


我不相信Sheets API(V4) 中有Visualization API的类比。从技术上讲,可视化 API 并不是旧版 Sheets API (V3) 的一部分。如果有的话,它是 Charts API 的一部分。所以你应该可以继续使用它。

您甚至可以在 GAS 中直接在服务器端使用它(请参阅使用绑定的 Google 脚本生成查询对象)。


推荐阅读