Google 电子表格搜索使用 javascript

Google spreadsheet Search using javascript

我正在尝试构建一个搜索选项,用户将在其中输入他们的 ID,他们将看到存储在 google spreadsheet.[=14= 中的相应 ID 的结果]

喜欢的用户将输入: 1 他们会看到结果:Nitu 5 他们会看到结果:Dipon

<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) {
   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;
      string += '<tr><td>' + id + '</td><td>' + name + '</td></tr>';
            }
   string += "</table>";
   $(string).appendTo('body');
        }   
  </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>

我可以使用上面的代码片段从我的 google sheet 中获取数据。但我不想一次获取所有数据。我只想要基于 ID 搜索的特定数据。

那么现在如何将此搜索功能集成到 javascript 中?

不用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>");

这是编辑后的版本,只需将“2”替换为您的 ID 或输入值 getter,它应该可以工作。请注意,您需要像语法一样引用数组中的输出。 fiddle

您可以将 Structured Query 用于 google 电子表格 API。

因此,如果使用适当的结构化查询发出 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

希望这对您有所帮助。干杯!!

交叉引用您的代码和仔细提供的答案!

1) 你的过滤器:--> return element.gsx$id.$t === 2 比较可能不是 return 预期的结果 --> return name.gsx$id.$t === '2'

2) 如果您的比较产生任何结果,returned 数据将在变量 'name' 中。 var name 在数组中。您将使用索引来访问数组元素。因此,考虑到这一点,您应该将代码更改为: var test = 名称[0].gsx$id.$t; 您在这里正确访问了数据 returned.

3) 始终确保有数据可供访问。 如果您尝试访问它,您的数组不能为空