0

Googleアナリティクスの埋め込みAPIとGoogleグラフを同じページに読み込むと、より具体的には埋め込みAPIを使用してチャートを描画するときに競合が発生しているようです。Googleアナリティクスの埋め込みAPIとGoogleグラフとの競合

この問題は、チャートのタイプが異なる場合にのみ発生します。埋め込みAPI:TABLEとグラフ:LINE

埋め込みAPIチャートが最初に読み込まれ、期待どおりに機能します。 チャートLINEチャートは、第二ロードされ、このエラーを返している:この質問のために

google.charts.load('current', { 
    packages: ['corechart', 'line', 'table'] 
}); 

UPDATE

回答:私は埋め込みAPIのチャートは、この機能を無効にすることを感じている

You called the draw() method with the wrong type of data rather than a DataTable or DataView

を:Google Charts draw() method wrong type when given DataTablehttp://www.google.com/jsapiへの参照を削除することを提案していますが、Google埋め込みAPIチャートはwindow.google.loadはもはや定義されておらず、代わりにwindow.google.charts.loadがGoogle Chartsに必要ですが、APIチャートを埋め込むことはできません。

+0

の可能性のある重複した[Googleのチャートのdraw()メソッド間違った型のDataTableを与え](のhttp:/ /stackoverflow.com/questions/35636075/google-charts-draw-method-wrong-type-when-given-datatable) – DaImTo

答えて

1

同じ問題が発生し、スクリプト読み込みの競合が修正されました。 解決策は、新しいチャートローダーのみを含めることです。

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

その後、GoogleのチャートAPIをロードする前に、余分なコードsuggested by Daniel LaLiberteを実行します。

//Handles differences in load functions 
google.load = google.load || google.charts.load; 
google.setOnLoadCallback = google.setOnLoadCallback || google.charts.setOnLoadCallback; 

//Loads the google analytics API 
(function (w, d, s, g, js, fs) { 
      //if ($('#googleCache').length > 0) return; 
      g = w.gapi || (w.gapi = {}); 
      g.analytics = { 
       q: [], 
       ready: function (f) { 
        this.q.push(f); 
       } 
      }; 
      js = d.createElement(s); 
      fs = d.getElementsByTagName(s)[0]; 
      js.src = 'https://apis.google.com/js/platform.js'; 
      js.id = "googleCache"; 
      fs.parentNode.insertBefore(js, fs); 
      js.onload = function() { 
       g.load('analytics'); 
      }; 
}(window, document, 'script')); 

//Load the charts you want 
google.charts.load('current', { packages: ['corechart', 'table', 'line', 'geochart'] }); 
関連する問題