#javascript
#javascript
Вопрос:
Я учусь использовать диаграммы Goolge. У меня нет проблем с использованием примеров для создания диаграмм с жестко закодированными данными. Тем не менее, я хотел бы прочитать данные из Google Таблиц с помощью запроса. Я потратил на это несколько дней и следовал всем примерам, которые смог найти. Суть в том, что я всегда получаю сообщение «Ошибка в запросе: время ожидания запроса истекло‘. Я даже получаю ошибку, когда пытаюсь воспроизвести пример Google developers. Должно быть что-то (возможно, настолько простое), чего мне не хватает. Я попытался сократить до максимально простого кода и таблицы здесь.
https://docs.google.com/spreadsheets/d/1i6HW7VGwqJVsA1FwzgQuzRTRqPfBw_KQW4DNiqPct4M
Я также могу сгенерировать json-файл с более длинным URL-адресом https://docs.google.com/spreadsheets/d/1i6HW7VGwqJVsA1FwzgQuzRTRqPfBw_KQW4DNiqPct4M/gviz/tq?gid=209730183amp;headers=1amp;tq=
Но я получаю пустое окно браузера с ошибкой в запросе с html-файлом ниже.
Очень благодарен за любую помощь.
<html>
<head>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var opts = {sendMethod: 'auto'};
var queryString = encodeURIComponent('SELECT A, B');
var query = new google.visualization.Query('https://docs.google.com/spreadsheets/d/1i6HW7VGwqJVsA1FwzgQuzRTRqPfBw_KQW4DNiqPct4M/gviz/tq?gid=209730183amp;headers=1amp;tq=' queryString, opts);
query.send(handleSampleDataQueryResponse);
}
function handleSampleDataQueryResponse(response) {
if (response.isError()) {
alert('Help! Error in query: ' response.getMessage() ' ' response.getDetailedMessage());
return;
}
var data = response.getDataTable();
var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
chart.draw(data, { height: 400 });
}
</script>
</head>
<body>
<div id="chart_div" style="width: 100%; height: 500px;"></div>
</body>
</html>
Ответ №1:
Джанин, в твоем коде нет ничего плохого. Диаграмма отображается правильно — http://brisray.com/test/janine.htm
Вы пытаетесь запустить этот код локально? Если это так, то вы столкнулись с проблемой CORS (совместное использование ресурсов из разных источников). Это часто встречается в API Google Charts с использованием Google Sheets. HTML-файл необходимо загрузить на веб-сервер, вы не можете запустить его со своего компьютера, но, как ни странно, поскольку таблицы должны быть общедоступными, я могу использовать их со своих собственных веб-страниц.
Комментарии:
1. Большое спасибо за ответ! Это интересная информация. Что я в конечном итоге узнал из другого комментария, на который я наткнулся (я думаю, на форуме Google Chart), так это то, что в текущей версии Google charts появились некоторые новые проблемы с безопасностью. Как и было рекомендовано, я использовал более старую версию с вызовом: google.charts.load(’47’, {‘packages’:[‘corechart’]});
2. Вместо значения по умолчанию current (которое является версией 49). Это сработало немедленно! Еще раз спасибо.
3. Кроме того, я должен был сказать, что да, я пытался запустить локально.
4. Я пытался запустить импорт моей собственной электронной таблицы Google локально, и это не удалось. Когда я загрузил его на веб-сайт, он работал правильно. Что особенно затрудняло диагностику, так это то, что примеры из документации Google charts выполнялись локально.