Как переставить столбцы или указать вывод столбцов при импорте с помощью Google Sheets API 4 (JavaScript) - PullRequest
1 голос
/ 20 апреля 2019

Я использую Google Sheet для вывода хорошей диаграммы с помощью Google Visualization API.

Недавно я переместил свой код, который создает dataTable, в Google Sheets v4 из Google Sheets v3, и я больше не могу этого добиться, поскольку v4 не поддерживает прямую манипуляцию «запросами».

Я создаю несколько диаграмм на основе одних и тех же данных, поэтому не могу переставить столбцы в реальном листе.

Я знаю, что у массива или массива JSON нет метода для смещения / перестановки столбцов, но я смог сделать это в v3 очень просто, просто запросив "SELECT A, B, D, C), например так:

function makeApiCall() {
var queryString = encodeURIComponent('SELECT A,B,D,C');
   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();
}

Это вывело бы диаграмму с переставленными столбцами A, B, D, C.

Вот что я попробовал в v4:

  function makeApiCall() {
  var params = { 
    spreadsheetId: 'my-spreadsheet-id',
    range: 'Sheet1!A:D', // Retrieve the values of "A:D".
  };
  var request = gapi.client.sheets.spreadsheets.values.get(params); // Modified
  request.then(function(response) {
  var values = response.result.values.map((e) => [e[0], e[1], e[3], e[4]]); // THIS doesn't work at all
  var w = new google.visualization.ChartWrapper({dataTable: values}); // Added

  var dataTable = w.getDataTable();

  }, function(reason) {
    console.error('error: ' + reason.result.error.message);
  });
}

Может ли это быть достигнуто с помощью чего-то подобного?

var values = response.result.values.map((e) => [e[0], e[1], e[3], e[4]]); // THIS doesn't work at all

Или, может быть, просто указав несколько диапазонов, как это?

 range: 'Sheet1!A:B','Sheet1!D:D','Sheet1!C:C' // Retrieve the values of "A:B",D:D,C:C /THIS doesn't work
...