簡體   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