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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Javascript中将查询字符串传递给Google表格API v4相关的知识,希望对你有一定的参考价值。

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

 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();
 }

现在,利用Google表格API v4(gapi.client.sheets.spreadsheets.values.get),这在v3中不起作用。我做:

      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();

我想我可以在chartwrapper属性中添加“query:”select * where D = 1“”,试图避免对数组中的每个元素进行排序和遍历,或者使用额外的controlwrapper。

答案

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

谷歌的一位开发人员认为过滤应该是一个完整的数据库的独家功能,谷歌表不是一个,所以我怀疑他们将永远从v3带回功能。

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

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

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

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

以上是关于如何在Javascript中将查询字符串传递给Google表格API v4的主要内容,如果未能解决你的问题,请参考以下文章

如何从用java编写的查询中将虚线字符串传递给oracle

如何在 Go 中将变量插入到多行(反引号)字符串中?

iPhone 4 在 Web 视图中将 JSON 字符串传递给 Javascript

如何在 Rails 视图中将 Ruby 变量传递给 JavaScript 函数?

如何在反应JavaScript中将id传递给navlink

如何在 mvc 视图中将剃刀值传递给 jquery 函数