2016-07-27 1 views
1

아래의 Google 시각화 쿼리 스크립트에서 Query.setQuery을 사용하여이 간단한 spreadsheet을 검색합니다. 스크립트는 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>

내가 지금 찾고 있어요 것은 다른 검색 기준을 추가 한 다음 경기는 전송이있다 일반 "결과"HTML 입력 필드. 검색은 스프레드 시트의 열 A와 행 1에있는 셀을 항상 찾아서 일치하는 것을 찾아야합니다.

예를 들어, 첫 번째 검색 필드에 만약 내가 에게 자넷를 입력하고 두 번째 필드에 나가 작업를 입력, 나는 요리은 "결과"입력 필드에 반환하고 싶습니다. 또는 Adam시간을 입력하면 1.5의 일치 항목을 반환해야합니다.

셀 A1에는 항상 동일한 데이터 ("Name")가 포함됩니다. 그러나, 행 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 ... again! 나는 어제 그것을 작동 시키려고 노력하면서 몇 시간을 보냈다. 맥주 한잔 사 줄까? – firenemus

+0

건배! 언제든지 도와 드리겠습니다 ... – WhiteHat

관련 문제