繁体   English   中英

如何在 Javascript 中将查询字符串传递给 Google Sheets API v4

[英]How to Pass a Query String to Google Sheets API v4 in Javascript

在以前的版本中我曾经做(简化):

 var queryString = encodeURIComponent('SELECT A,B,D,C WHERE D=1');
 var query = new google.visualization.Query(
          'https://docs.google.com/spreadsheets/d/1*SPREADSHEETID*/gviz/tq?gid=1013479342&headers=1&tqx=responseHandler:handleQueryResponse' + '&access_token=' + encodeURIComponent(gapi.auth.getToken().access_token));
 query.send(handleQueryResponse);

 function handleQueryResponse(response) {
 var dataTable = response.getDataTable();
 }

现在,要利用在 v3 中不起作用的 Google Sheets API v4 (gapi.client.sheets.spreadsheets.values.get)。 我愿意:

      var params = {
    valueRenderOption: "UNFORMATTED_VALUE",
    spreadsheetId: '*YOURSPREADSHEETID',
    range: 'Sheet1!A:D', 
      var request = gapi.client.sheets.spreadsheets.values.get(params); 
  request.then(function(response) {
         var values = response.result.values.map(function(e) {return [e[0], e[1], e[3], e[2]]});
    var w = new google.visualization.ChartWrapper({dataTable: values, 
    query: "select * where D = 1"}); // THIS DOESN'T WORK
   var dataTable = w.getDataTable();

我想我可以在图表包装器属性中添加“查询:“select * where D = 1””,以避免对数组中的每个元素进行排序和遍历,或者使用额外的控件包装器。

我会把这个留在这里。 经过进一步研究,Google Sheets API v4 仍然不支持简单过滤。

谷歌的一位开发人员认为过滤应该是成熟数据库的专有功能,而谷歌表不是一个,所以我怀疑他们是否会从 v3 中恢复该功能。

如果您需要过滤,您有 3 个选项:

  • 首先过滤您的电子表格(使用过滤后的数据制作多个工作表,然后调用已应用过滤器的范围)。
  • 返回使用支持过滤的 Google Sheets v3(见上文)。
  • 在客户端级别收到数据后过滤数据(是的,我知道这对性能来说是最糟糕的)。

我选择使用第三种方法。 由于我正在使用 Google Visualization API,因此我所要做的就是在绘制数据视图之前在数据视图上应用过滤器。

var view = new google.visualization.DataView(dataTable);
view.setRows(dataTable.getFilteredRows([{column: 4, value: 1}]));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM