2016-04-25 2 views
1

Я использую Google Analytics и библиотеку визуализации для создания панели мониторинга для наших чисел аналитики. Он работал хорошо, но начал с перерывами давать мне . Вы вызвали метод draw() с неправильным типом данных, а не с ошибкой DataTable или DataView. Я искал на этом и нашел несколько потоков, которые говорят, что другие люди не могут воспроизвести его или что они неправильно загружают библиотеки. Я изменил мою нагрузку ниже (есть куча разрешения GA и все, что я не показываю здесь. Но это часть все, кажется, работает.)Google visualization datatable intermittent problems

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> 

... 

google.charts.load("current", {packages:["table"]}); 
google.charts.setOnLoadCallback(getStarted); 

... 

gapi.client.analytics.data.ga.get(eventsObj).execute(function(results){ 
    var viz = new google.visualization.Table($('#my-table-id')); 
    var dataTable = new google.visualization.DataTable(results.dataTable); 
    viz.draw(dataTable,{showRowNumber:true,allowHtml:true}); 
}); 

Когда я смотрю на results.dataTable из вызов gapi содержит данные, которые я ожидал бы. Проблема, как представляется, в преобразовании этих результатов в DataTable в этой строке:

var dataTable = new google.visualization.DataTable(results.dataTable); 

Когда я получаю сообщение, я не получаю ошибки JavaScript в консоли. Но если я проверю данные, возвращаемые этим вызовом, будет найден массив с именем Ec с нулевой длиной. Когда диаграмма успешна, существует массив с именем ec с длиной 12 (количество результатов, возвращаемых запросом аналитике Google).

Любая идея, что может заставить DataTable (results.dataTable) некорректно работать некорректно?

+0

пример, указанный в [Конструктор класса таблицы данных] (https://developers.google.com/chart/interactive/docs/reference#constructor_1) показывает формат данных для инициализации таблицы - можете ли вы поделиться образцом из 'results.dataTable'? – WhiteHat

+0

Я вижу это с помощью инструментов отладки. Данные поступают из встроенного api для Google Analytics. Похоже, что он выполняет структуру - объект с массивами cols и rows, которые содержат объекты с соответствующими значениями. – Rothrock

+0

Проблема заключается в том, что второй раз через новый google.visualization.DataTable() фактически не создает экземпляр DataTable. Не знаю, почему. – Rothrock

ответ

0

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

google.load("visualization", "1", {packages:["table","corechart"]}); 
google.setOnLoadCallback(getStarted); 

И проблема ушла. Не знаю, правильно ли это, но сейчас работает.

Смежные вопросы