Я использую этот код, чтобы успешно нарисовать карту, которая использует 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 и указывать на локальную копию. Я не смог найти никакой документации, которая бы показала, что это возможно. Кто-нибудь пробовал это?