2

我想建立一個搜索選項,用戶將輸入他們的ID,他們會看到存儲在谷歌電子表格中的相應ID的結果。谷歌電子表格使用javascript搜索

像用戶將輸入: 1和他們將看到的結果:逆徒 5和他們將看到的結果:Dipon enter image description here

<input id="id" type="text" placeholder="Your ID"> 
 
<input id="search" type="submit" value="Search"> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<script> 
 
    function displayContent(json) { 
 
\t \t var string = "<table>";  
 
      var len = json.feed.entry.length; 
 
      for (var i=0; i<len; i++) { 
 
        var id = json.feed.entry[i].gsx$id.$t; 
 
        var name = json.feed.entry[i].gsx$name.$t; 
 
\t \t \t \t string += '<tr><td>' + id + '</td><td>' + name + '</td></tr>'; 
 
      } 
 
\t \t \t string += "</table>"; 
 
\t \t \t $(string).appendTo('body'); 
 
     } 
 
\t \t </script> 
 
<script src="http://spreadsheets.google.com/feeds/list/1WMvFqepPmQUVwTFFUZW_3SfSt1ZBr_AEy_XdUXZ72ng/od6/public/values?alt=json-in-script&amp;callback=displayContent" type="text/javascript"></script>

我可以從我的谷歌片取數據使用上面的代碼片段。但我不想一次獲取所有數據。我只需要基於帶ID的搜索的特定數據。

那麼現在我怎麼把這個搜索功能整合到javascript中呢?

+0

所以你只需要用戶的名字? –

+0

我想要如下功能: 用戶將輸入:1,他們將看到結果:Nitu 如果他們輸入5,他們將看到結果:Dipon。 是的,我想要特定ID的名稱。 請看照片。 –

+0

刪除​​'+ id +'這是你的事後? –

回答

1

對於Google電子表格API,您可以使用Structured Query

因此,如果使用適當的結構化查詢進行GET請求,您將只獲得相關數據。在你的情況下,添加sq=id==5作爲查詢參數。

所以寧可拿到整個數據並解析它的後處理,你應該做出一個函數,它會作出適當的GET請求和獲取你只有你需要的數據。

var fetchName = function(ID, workSheetID){ 
    var url = 'https://spreadsheets.google.com/feeds/list/'+workSheetID+'/od6/public/values?sq=id='+ID+'&alt=json-in-script&callback=?'; 

    $.get(url, function(data) { 
      //Parse and Do Your Stuff Here 
    }); 
} 

Plunker Sample

希望這有助於。乾杯!

+0

非常感謝:)它的工作原理完美。 :) –

1

而不是做一個for循環只是使用filter過濾相應的ID。對於〔實施例:

function displayContent(json) { 
    var output = json.feed.entry.filter(function(name){ 
     return name.gsx$id.$t === '2' 

    }) 
      $('body').append(" <p>" + output[0].gsx$name.$t + "</p>"); 

繼承人的編輯版本,只需用你的身份證或輸入值的getter替代「2」,它應該工作。注意你需要像數組語法一樣引用數組中的輸出。 fiddle

+0

它不工作:( var name = json.feed.entry.filter(function(element){ return element.gsx 。$ ID $ T === 2 }) VAR測試= name.gsx $名稱$ T; ' 它顯示了一個錯誤**無法讀取屬性 '$ T' 的undefineddisplayContent ** –

+0

聽起來我不確定語法,你將不得不使用它並調試它,但這應該是一般想法。 – codemonkey

0

交叉引用您的代碼與仔細提供的答案!

1)您的過濾器: - > return element.gsx $ id。$ t === 2 比較可能不會返回預期結果 - > return name.gsx $ id。$ t === '2'

2)如果您的比較產生任何結果,返回的數據將在變量'name'中。 var name是在一個數組中。您將使用索引來訪問數組元素。因此,考慮到這一點,您應該將您的代碼更改爲: var test = name [0] .gsx $ id。$ t; 在這裏你正確地訪問返回的數據。

3)務必確保有數據可以訪問。 如果您嘗試訪問它,則您的陣列不能爲空

+0

嗨!如果您爲Stack未來的工作嘗試簽出[POST Format](https://stackoverflow.com/help/formatting)會更好。 -謝謝 – Momin