Кэширование источника Google Sheets для Google Charts - PullRequest
0 голосов
/ 27 апреля 2020

Я использую этот код, чтобы успешно нарисовать карту, которая использует URL-адрес Google Sheets в качестве источника:

google.charts.load('current', {
  callback: drawRegionsMap,
  packages: ['geochart']
});

function drawRegionsMap() {
  var mappa = ["https://docs.google.com/spreadsheets/d/somethingsomething/edit?gid=0&headers=1&range=A1:F", "visualization"];
  var query = new google[mappa[1]].Query(mappa[0]);
  query.send(handleQueryResponseTR);
}

function handleQueryResponseTR(response) {
  if (response.isError()) {
    alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
    return;
  }

  var data = response.getDataTable();

  var view = new google.visualization.DataView(data);
  view.setColumns([4, 5, 2, {
    calc: function(dt, row) {
      return '<span style="font-size:16px"><strong>' + dt.getValue(row, 3) + '</strong><br>' + dt.getFormattedValue(row, 1) + ' text text</span>' /* + dt.getValue(row, 2) + ' text text'*/ ;
    },
    role: 'tooltip',
    properties: {
        html: true
    },
    type: 'string'
  }]);

  var options = {
    displayMode: 'markers',
    sizeAxis: {
      minValue: 1,
      maxValue: 30
    },
    colorAxis: {
      colors: ['#76CBC0', '#76CBC0']
    },
    width: 100 + "%",
    height: 100 + '%',
    backgroundColor: 'transparent',
    datalessRegionColor: '#dddddd',
    defaultColor: '#dddddd',
    legend: 'none',
    tooltip: {
      isHtml: 'true',
      showTitle: false,
      textStyle: {
        color: '#444'
      },
      trigger: 'focus',

    }
  };

  var chart = new google.visualization.GeoChart(document.getElementById('geochart-colors'));
  google.visualization.events.addListener(chart, 'select', function() {
    var selection = chart.getSelection();
  });
  chart.draw(view, options);

  go();

  window.addEventListener('resize', go);

  function go() {
    chart.draw(view, options);
  }
}

А затем:

<div id="geochart-colors"></div>

Все работает хорошо, но, очевидно, добавление этого на веб-страницу значительно увеличивает время загрузки. Есть ли способ указать на URL, который не относится непосредственно к Google Sheets? Например, я мог извлекать содержимое таблиц Google каждые 10 минут с помощью cron и указывать на локальную копию. Я не смог найти никакой документации, которая бы показала, что это возможно. Кто-нибудь пробовал это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...