2017-05-03 5 views
2

私は、1つのハンドル機能を同時に3つのチャートでクエリ3枚を試してみました、それは動作しますが、結果が間違っているので(それは3 div要素で同じチャートを表示)複数のスプレッドシートを同時にGoogle googlechartクエリで使用できますか?

だから、私はハンドル機能を追加するために持っていると思います

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

 
google.charts.setOnLoadCallback(drawRegionsMap); 
 

 
function drawRegionsMap() { 
 
\t \t var query1 = new google.visualization.Query("https://docs.google.com/spreadsheets/d/14VouG7zZqHGB9CA6bxQx6CXX-TvOYkSqTmrN5DAj1Do/edit#gid=1175123524"); 
 
\t \t 
 
\t \t var query2 = new google.visualization.Query('https://docs.google.com/spreadsheets/d/1RsugJPtz2EdHOLaiL0SvR9bh61H-vAgn9x1QBjIJ--c/edit?usp=sharing'); 
 
\t \t 
 
\t \t var query3 = new google.visualization.Query('https://docs.google.com/spreadsheets/d/1zPP22gUPLDqTrvASIU3OXpmeHL_9IBS2O4z75g-1BHY/edit?usp=sharing'); 
 
\t \t 
 
\t \t query1.send(handleQueryResponseTR1); 
 
\t \t query2.send(handleQueryResponseTR2); 
 
\t \t query3.send(handleQueryResponseTR3); 
 
\t } 
 

 
\t function handleQueryResponseTR1(response1) { 
 
\t \t if (response1.isError()) { 
 
\t \t \t alert('Error in query: ' + response1.getMessage() + ' ' + response1.getDetailedMessage()); 
 
\t \t \t return; 
 
\t \t } 
 
\t \t function handleQueryResponseTR2(response2) { 
 
\t \t if (response2.isError()) { 
 
\t \t \t alert('Error in query: ' + response2.getMessage() + ' ' + response2.getDetailedMessage()); 
 
\t \t \t return; 
 
\t \t } 
 
\t \t function handleQueryResponseTR3(response3) { 
 
\t \t if (response3.isError()) { 
 
\t \t \t alert('Error in query: ' + response3.getMessage() + ' ' + response3.getDetailedMessage()); 
 
\t \t \t return; 
 
\t \t } 
 
\t \t var data1 = response1.getDataTable(); 
 
\t \t var data2 = response2.getDataTable(); 
 
\t \t var data3 = response3.getDataTable();

などの各チャート上のが、私はエラー

漢ですdleQueryResponseTR2が定義されていません

Googleチャートで1ページに複数のシートを照会できるかどうかわかりません。

答えて

1

質問に答えるために、複数のクエリに同時に問題があるとは思われません。あなたのコードについて

:)

あなたhandleQueryResponseTR2機能はhandleQueryResponseTR1でローカル関数ですが、drawRegionsMap(からそれを呼び出すようにしてみてください。 handleQueryResponseTR2()はそのスコープ内に定義されていません。

handleQueryResponseTR2()を呼び出し元関数に表示するために上部スコープに移動します。

実際、すべてのhandleQueryResponse関数を上位レベルに移動します。

var data1; 
var data2; 
var data3; 

function handleQueryResponseTR1(response1) { 
    if (response1.isError()) { 
     alert('Error in query: ' + response1.getMessage() + ' ' + response1.getDetailedMessage()); 
     return; 
    } 
    data1 = response1.getDataTable(); 
} 

function handleQueryResponseTR2(response2) { 
    if (response2.isError()) { 
     alert('Error in query: ' + response2.getMessage() + ' ' + response2.getDetailedMessage()); 
     return; 
    } 
    data2 = response2.getDataTable(); 
} 

function handleQueryResponseTR3(response3) { 
    if (response3.isError()) { 
     alert('Error in query: ' + response3.getMessage() + ' ' + response3.getDetailedMessage()); 
     return; 
    } 
    data3 = response3.getDataTable(); 
} 

function drawRegionsMap() { 
    var query1 = new google.visualization.Query("https://docs.google.com/spreadsheets/d/14VouG7zZqHGB9CA6bxQx6CXX-TvOYkSqTmrN5DAj1Do/edit#gid=1175123524"); 

    var query2 = new google.visualization.Query('https://docs.google.com/spreadsheets/d/1RsugJPtz2EdHOLaiL0SvR9bh61H-vAgn9x1QBjIJ--c/edit?usp=sharing'); 

    var query3 = new google.visualization.Query('https://docs.google.com/spreadsheets/d/1zPP22gUPLDqTrvASIU3OXpmeHL_9IBS2O4z75g-1BHY/edit?usp=sharing'); 

    query1.send(handleQueryResponseTR1); 
    query2.send(handleQueryResponseTR2); 
    query3.send(handleQueryResponseTR3); 
} 

handleQueryResponse関数は、応答を受け取ったときに非同期に呼び出されることに注意してください。

関連する問題