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&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
});
}
希望这对您有所帮助。干杯!!
交叉引用您的代码和仔细提供的答案!
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) 始终确保有数据可供访问。 如果您尝试访问它,您的数组不能为空。
我正在尝试构建一个搜索选项,用户将在其中输入他们的 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&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
});
}
希望这对您有所帮助。干杯!!
交叉引用您的代码和仔细提供的答案!
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) 始终确保有数据可供访问。 如果您尝试访问它,您的数组不能为空。