2016-07-27 14 views
1

私はこの簡易spreadsheetを検索するために、以下のGoogle視覚化クエリスクリプトでQuery.setQueryを使用しています。スクリプトは、html入力フィールドに入力された名前の列Aを調べ、その人物の対応する仕事と時間(他の列から)を照合し、これらのデータをhtml入力フィールドに戻します。 (それに助けのためのフォーラムメンバーホワイトハットに感謝!)Googleビジュアライゼーションクエリを使用してスプレッドシートを検索する方法 - 複数の検索条件に基づいて

google.charts.load('current', { 
 
    callback: function() { 
 
    document.getElementById('Search').addEventListener('click', searchSheet, false); 
 
    searchSheet(); 
 

 
    function searchSheet() { 
 
     searchName = document.getElementById('Name').value; 
 

 
     var queryWORK = new google.visualization.Query('https://docs.google.com/spreadsheet/ccc?key=1HpHMfoEnPgESb2XPVCgb7XyGwRAvrq3EoQj4WHj4vhA&sheet=QUERY'); 
 
     if (searchName !== '') { 
 
     queryWORK.setQuery('select * where A = "' + searchName + '"'); 
 
\t \t 
 
     } 
 

 
\t \t queryWORK.send(function (response) { 
 
     if (response.isError()) { 
 
      console.log('Error in ID Validation Query: ' + response.getMessage() + ' ' + response.getDetailedMessage()); 
 
      return; 
 
     } 
 

 
     var datatable = response.getDataTable(); 
 
     for (var i = 0; i < datatable.getNumberOfColumns(); i++) { 
 
      document.getElementById(datatable.getColumnLabel(i)).value = 
 
      (datatable.getNumberOfRows() > 0) ? datatable.getValue(0, i) : ''; 
 
     } 
 

 
     var chart = new google.visualization.Table(document.getElementById('table_div')); 
 
     chart.draw(datatable); 
 
     }); 
 
    } 
 
    }, 
 
    packages:['table'] 
 
});
div { 
 
    padding: 6px 6px 6px 6px; 
 
}
<script src="https://www.gstatic.com/charts/loader.js"></script> 
 
<div><label for="Name">Enter Name: </label><input id="Name" type="text" value="Bill" /></div> 
 
<div><input id="Search" type="button" value="Search" /></div> 
 
<div><label for="Job">Job: </label><input id="Job" type="text" /></div> 
 
<div><label for="Hours">Hours: </label><input id="Hours" type="text" /></div> 
 
<div id="table_div"></div>

私が今しているよ、何が別の検索条件を追加し、その後、試合はに送られてきましたジェネリックな "results" html入力フィールド。検索では、スプレッドシートの列Aと行1のセルを常に見て、一致するものを見つける必要があります。例えば

、最初の検索フィールドに、私はジャネットを入力し、2番目のフィールドに私は仕事を入力すると、私は「結果」入力フィールドに返される料理をしたいと思います。または、アダム時間と入力すると、1.5の一致が返されます。

セルA1には常に同じデータ(「名前」)が含まれます。ただし、行1の残りのセルの内容(B1、C1、D2 ...)が変更されるとわかる方法はありません。

おかげ

答えて

1

あなたはその後、要求された列

作業スニペット以下参照を見つけるために、以前のように同様のロジックを使用するすべての列

'select * where A = "' + searchText + '"'

を返すために、アスタリスクを使用することができます...

google.charts.load('current', { 
 
    callback: function() { 
 
    document.getElementById('Search').addEventListener('click', searchSheet, false); 
 
    searchSheet(); 
 

 
    function searchSheet() { 
 
     searchText = document.getElementById('Name').value; 
 

 
     var queryWORK = new google.visualization.Query('https://docs.google.com/spreadsheet/ccc?key=1HpHMfoEnPgESb2XPVCgb7XyGwRAvrq3EoQj4WHj4vhA&sheet=QUERY'); 
 
     if (searchText !== '') { 
 
     queryWORK.setQuery('select * where A = "' + searchText + '"'); 
 
     } 
 

 
     queryWORK.send(function (response) { 
 
     if (response.isError()) { 
 
      console.log('Error in ID Validation Query: ' + response.getMessage() + ' ' + response.getDetailedMessage()); 
 
      return; 
 
     } 
 

 
     var datatable = response.getDataTable(); 
 
     for (var i = 0; i < datatable.getNumberOfColumns(); i++) { 
 
      var field = document.getElementById('Field').value; 
 
      if (datatable.getColumnLabel(i) === field) { 
 
      document.getElementById('Result').value = (datatable.getNumberOfRows() > 0) ? datatable.getValue(0, i) : ''; 
 
      } 
 
     } 
 

 
     var chart = new google.visualization.Table(document.getElementById('table_div')); 
 
     chart.draw(datatable); 
 
     }); 
 
    } 
 
    }, 
 
    packages:['table'] 
 
});
div { 
 
    margin: 6px 6px 6px 6px; 
 
}
<script src="https://www.gstatic.com/charts/loader.js"></script> 
 
<div><label for="Name">Enter Name: </label><input id="Name" type="text" value="Bill" /></div> 
 
<div><label for="Field">Field: </label><input id="Field" type="text" value="Job" /></div> 
 
<div><input id="Search" type="button" value="Search" /></div> 
 
<div><label for="Result">Result: </label><input id="Result" type="text" /></div> 
 
<div id="table_div"></div>

+0

うわー!あまりにも多くのWhiteHat ...ありがとう!私は昨日働かそうと数時間過ごしました。ビールを買えますか? – firenemus

+0

よろしく!いつでも助けてくれることをうれしく思います... – WhiteHat

関連する問題